12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <?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;
- }
- }
|