diff options
Diffstat (limited to 'includes/vendor/rmccue/requests/library/Requests/Auth')
| -rw-r--r-- | includes/vendor/rmccue/requests/library/Requests/Auth/Basic.php | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/includes/vendor/rmccue/requests/library/Requests/Auth/Basic.php b/includes/vendor/rmccue/requests/library/Requests/Auth/Basic.php new file mode 100644 index 0000000..a355cfd --- /dev/null +++ b/includes/vendor/rmccue/requests/library/Requests/Auth/Basic.php @@ -0,0 +1,88 @@ +<?php +/** + * Basic Authentication provider + * + * @package Requests + * @subpackage Authentication + */ + +/** + * Basic Authentication provider + * + * Provides a handler for Basic HTTP authentication via the Authorization + * header. + * + * @package Requests + * @subpackage Authentication + */ +class Requests_Auth_Basic implements Requests_Auth { + /** + * Username + * + * @var string + */ + public $user; + + /** + * Password + * + * @var string + */ + public $pass; + + /** + * Constructor + * + * @throws Requests_Exception On incorrect number of arguments (`authbasicbadargs`) + * @param array|null $args Array of user and password. Must have exactly two elements + */ + public function __construct($args = null) { + if (is_array($args)) { + if (count($args) !== 2) { + throw new Requests_Exception('Invalid number of arguments', 'authbasicbadargs'); + } + + list($this->user, $this->pass) = $args; + } + } + + /** + * Register the necessary callbacks + * + * @see curl_before_send + * @see fsockopen_header + * @param Requests_Hooks $hooks Hook system + */ + public function register(Requests_Hooks &$hooks) { + $hooks->register('curl.before_send', array(&$this, 'curl_before_send')); + $hooks->register('fsockopen.after_headers', array(&$this, 'fsockopen_header')); + } + + /** + * Set cURL parameters before the data is sent + * + * @param resource $handle cURL resource + */ + public function curl_before_send(&$handle) { + curl_setopt($handle, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); + curl_setopt($handle, CURLOPT_USERPWD, $this->getAuthString()); + } + + /** + * Add extra headers to the request before sending + * + * @param string $out HTTP header string + */ + public function fsockopen_header(&$out) { + $out .= sprintf("Authorization: Basic %s\r\n", base64_encode($this->getAuthString())); + } + + /** + * Get the authentication string (user:pass) + * + * @return string + */ + public function getAuthString() { + return $this->user . ':' . $this->pass; + } +}
\ No newline at end of file |