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