home *** CD-ROM | disk | FTP | other *** search
/ HTML Examples / WP.iso / wordpress2 / wp-includes / Requests / Auth / Basic.php
Encoding:
PHP Script  |  2016-05-12  |  1.9 KB  |  88 lines

  1. <?php
  2. /**
  3.  * Basic Authentication provider
  4.  *
  5.  * @package Requests
  6.  * @subpackage Authentication
  7.  */
  8.  
  9. /**
  10.  * Basic Authentication provider
  11.  *
  12.  * Provides a handler for Basic HTTP authentication via the Authorization
  13.  * header.
  14.  *
  15.  * @package Requests
  16.  * @subpackage Authentication
  17.  */
  18. class Requests_Auth_Basic implements Requests_Auth {
  19.     /**
  20.      * Username
  21.      *
  22.      * @var string
  23.      */
  24.     public $user;
  25.  
  26.     /**
  27.      * Password
  28.      *
  29.      * @var string
  30.      */
  31.     public $pass;
  32.  
  33.     /**
  34.      * Constructor
  35.      *
  36.      * @throws Requests_Exception On incorrect number of arguments (`authbasicbadargs`)
  37.      * @param array|null $args Array of user and password. Must have exactly two elements
  38.      */
  39.     public function __construct($args = null) {
  40.         if (is_array($args)) {
  41.             if (count($args) !== 2) {
  42.                 throw new Requests_Exception('Invalid number of arguments', 'authbasicbadargs');
  43.             }
  44.  
  45.             list($this->user, $this->pass) = $args;
  46.         }
  47.     }
  48.  
  49.     /**
  50.      * Register the necessary callbacks
  51.      *
  52.      * @see curl_before_send
  53.      * @see fsockopen_header
  54.      * @param Requests_Hooks $hooks Hook system
  55.      */
  56.     public function register(Requests_Hooks &$hooks) {
  57.         $hooks->register('curl.before_send', array(&$this, 'curl_before_send'));
  58.         $hooks->register('fsockopen.after_headers', array(&$this, 'fsockopen_header'));
  59.     }
  60.  
  61.     /**
  62.      * Set cURL parameters before the data is sent
  63.      *
  64.      * @param resource $handle cURL resource
  65.      */
  66.     public function curl_before_send(&$handle) {
  67.         curl_setopt($handle, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
  68.         curl_setopt($handle, CURLOPT_USERPWD, $this->getAuthString());
  69.     }
  70.  
  71.     /**
  72.      * Add extra headers to the request before sending
  73.      *
  74.      * @param string $out HTTP header string
  75.      */
  76.     public function fsockopen_header(&$out) {
  77.         $out .= sprintf("Authorization: Basic %s\r\n", base64_encode($this->getAuthString()));
  78.     }
  79.  
  80.     /**
  81.      * Get the authentication string (user:pass)
  82.      *
  83.      * @return string
  84.      */
  85.     public function getAuthString() {
  86.         return $this->user . ':' . $this->pass;
  87.     }
  88. }