Twitter Api

Gestart doorShahiem4 reacties81 weergaven

5 berichten · pagina 1 van 1

Shahiem

Lid · Topicstarter

Berichten
20.364
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Hi,

Ik ben bezig met Twitter api installeren, maar ik krijg steeds een bugje niet opgelost. Hoe kan dit?

Foutmelding:
Undefined index: port
Foutcode #8
Bestand /home/***/domains/***/public_html/***/api/twitter/twitteroauth/OAuth.php
Lijn 383

Class

[COLOR= #0000BB]<?php[/COLOR]
[COLOR= #FF8000]// vim: foldmethod=marker

/* Generic exception class
 */[/COLOR]
[URL="http://www.php.net/class"]class[/URL] OAuthException extends Exception [COLOR= #007700]{[/COLOR]
  [COLOR= #FF8000]// pass[/COLOR]
[COLOR= #007700]}[/COLOR]

[URL="http://www.php.net/class"]class[/URL] OAuthConsumer [COLOR= #007700]{[/COLOR]
  [URL="http://www.php.net/public"]public[/URL] [COLOR= #0000BB]$key[/COLOR][COLOR= #007700];[/COLOR]
  [URL="http://www.php.net/public"]public[/URL] [COLOR= #0000BB]$secret[/COLOR][COLOR= #007700];

  function[/COLOR] __construct[COLOR= #007700]([/COLOR][COLOR= #0000BB]$key[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$secret[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$callback_url[/COLOR][COLOR= #007700]=[/COLOR]NULL[COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR][URL="http://www.php.net/key"]key[/URL] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$key[/COLOR][COLOR= #007700];[/COLOR]
    [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]secret [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$secret[/COLOR][COLOR= #007700];[/COLOR]
    [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]callback_url [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$callback_url[/COLOR][COLOR= #007700];
  }

  function[/COLOR] __toString[COLOR= #007700]() {[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #DD0000]"OAuthConsumer[key=$this->key,secret=$this->secret]"[/COLOR][COLOR= #007700];
  }
}[/COLOR]

[URL="http://www.php.net/class"]class[/URL] OAuthToken [COLOR= #007700]{[/COLOR]
  [COLOR= #FF8000]// access tokens and request tokens[/COLOR]
  [URL="http://www.php.net/public"]public[/URL] [COLOR= #0000BB]$key[/COLOR][COLOR= #007700];[/COLOR]
  [URL="http://www.php.net/public"]public[/URL] [COLOR= #0000BB]$secret[/COLOR][COLOR= #007700];[/COLOR]

  [COLOR= #FF8000]/**
   * key = the token
   * secret = the token secret
   */[/COLOR]
  [COLOR= #007700]function[/COLOR] __construct[COLOR= #007700]([/COLOR][COLOR= #0000BB]$key[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$secret[/COLOR][COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR][URL="http://www.php.net/key"]key[/URL] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$key[/COLOR][COLOR= #007700];[/COLOR]
    [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]secret [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$secret[/COLOR][COLOR= #007700];
  }[/COLOR]

  [COLOR= #FF8000]/**
   * generates the basic string serialization of a token that a server
   * would respond to request_token and access_token calls with
   */[/COLOR]
  [COLOR= #007700]function[/COLOR] to_string[COLOR= #007700]() {[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #DD0000]"oauth_token="[/COLOR] [COLOR= #007700].[/COLOR]
           OAuthUtil[COLOR= #007700]::[/COLOR]urlencode_rfc3986[COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR][URL="http://www.php.net/key"]key[/URL][COLOR= #007700]) .[/COLOR]
           [COLOR= #DD0000]"&oauth_token_secret="[/COLOR] [COLOR= #007700].[/COLOR]
           OAuthUtil[COLOR= #007700]::[/COLOR]urlencode_rfc3986[COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]secret[COLOR= #007700]);
  }

  function[/COLOR] __toString[COLOR= #007700]() {[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]to_string[COLOR= #007700]();
  }
}[/COLOR]

[COLOR= #FF8000]/**
 * A class for implementing a Signature Method
 * See section 9 ("Signing Requests") in the spec
 */[/COLOR]
abstract [URL="http://www.php.net/class"]class[/URL] OAuthSignatureMethod [COLOR= #007700]{[/COLOR]
  [COLOR= #FF8000]/**
   * Needs to return the name of the Signature Method (ie HMAC-SHA1)
   * @return string
   */[/COLOR]
  abstract [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] get_name[COLOR= #007700]();[/COLOR]

  [COLOR= #FF8000]/**
   * Build up the signature
   * NOTE: The output of this function MUST NOT be urlencoded.
   * the encoding is handled in OAuthRequest when the final
   * request is serialized
   * @param OAuthRequest $request
   * @param OAuthConsumer $consumer
   * @param OAuthToken $token
   * @return string
   */[/COLOR]
  abstract [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] build_signature[COLOR= #007700]([/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$token[/COLOR][COLOR= #007700]);[/COLOR]

  [COLOR= #FF8000]/**
   * Verifies that a given signature is correct
   * @param OAuthRequest $request
   * @param OAuthConsumer $consumer
   * @param OAuthToken $token
   * @param string $signature
   * @return bool
   */[/COLOR]
  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] check_signature[COLOR= #007700]([/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$token[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$signature[/COLOR][COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$built[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]build_signature[COLOR= #007700]([/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$token[/COLOR][COLOR= #007700]);[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$built[/COLOR] [COLOR= #007700]==[/COLOR] [COLOR= #0000BB]$signature[/COLOR][COLOR= #007700];
  }
}[/COLOR]

[COLOR= #FF8000]/**
 * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104] 
 * where the Signature Base String is the text and the key is the concatenated values (each first 
 * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an & 
 * character (ASCII code 38) even if empty.
 *   - Chapter 9.2 ("HMAC-SHA1")
 */[/COLOR]
[URL="http://www.php.net/class"]class[/URL] OAuthSignatureMethod_HMAC_SHA1 extends OAuthSignatureMethod [COLOR= #007700]{
  function[/COLOR] get_name[COLOR= #007700]() {[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #DD0000]"HMAC-SHA1"[/COLOR][COLOR= #007700];
  }[/COLOR]

  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] build_signature[COLOR= #007700]([/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$token[/COLOR][COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$base_string[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$request[/COLOR][COLOR= #007700]->[/COLOR]get_signature_base_string[COLOR= #007700]();[/COLOR]
    [COLOR= #0000BB]$request[/COLOR][COLOR= #007700]->[/COLOR]base_string [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$base_string[/COLOR][COLOR= #007700];[/COLOR]

    [COLOR= #0000BB]$key_parts[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]([/COLOR]
      [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700]->[/COLOR]secret[COLOR= #007700],
      ([/COLOR][COLOR= #0000BB]$token[/COLOR][COLOR= #007700]) ?[/COLOR] [COLOR= #0000BB]$token[/COLOR][COLOR= #007700]->[/COLOR]secret [COLOR= #007700]:[/COLOR] [COLOR= #DD0000]""[/COLOR]
    [COLOR= #007700]);[/COLOR]

    [COLOR= #0000BB]$key_parts[/COLOR] [COLOR= #007700]=[/COLOR] OAuthUtil[COLOR= #007700]::[/COLOR]urlencode_rfc3986[COLOR= #007700]([/COLOR][COLOR= #0000BB]$key_parts[/COLOR][COLOR= #007700]);[/COLOR]
    [COLOR= #0000BB]$key[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/implode"]implode[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]&[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$key_parts[/COLOR][COLOR= #007700]);[/COLOR]

    [URL="http://www.php.net/return"]return[/URL] [URL="http://www.php.net/base64_encode"]base64_encode[/URL][COLOR= #007700]([/COLOR]hash_hmac[COLOR= #007700]([/COLOR][COLOR= #DD0000]sha1[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$base_string[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$key[/COLOR][COLOR= #007700],[/COLOR] true[COLOR= #007700]));
  }
}[/COLOR]

[COLOR= #FF8000]/**
 * The PLAINTEXT method does not provide any security protection and SHOULD only be used 
 * over a secure channel such as HTTPS. It does not use the Signature Base String.
 *   - Chapter 9.4 ("PLAINTEXT")
 */[/COLOR]
[URL="http://www.php.net/class"]class[/URL] OAuthSignatureMethod_PLAINTEXT extends OAuthSignatureMethod [COLOR= #007700]{[/COLOR]
  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] get_name[COLOR= #007700]() {[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #DD0000]"PLAINTEXT"[/COLOR][COLOR= #007700];
  }[/COLOR]

  [COLOR= #FF8000]/**
   * oauth_signature is set to the concatenated encoded values of the Consumer Secret and 
   * Token Secret, separated by a & character (ASCII code 38), even if either secret is 
   * empty. The result MUST be encoded again.
   *   - Chapter 9.4.1 ("Generating Signatures")
   *
   * Please note that the second encoding MUST NOT happen in the SignatureMethod, as
   * OAuthRequest handles this!
   */[/COLOR]
  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] build_signature[COLOR= #007700]([/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$token[/COLOR][COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$key_parts[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]([/COLOR]
      [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700]->[/COLOR]secret[COLOR= #007700],
      ([/COLOR][COLOR= #0000BB]$token[/COLOR][COLOR= #007700]) ?[/COLOR] [COLOR= #0000BB]$token[/COLOR][COLOR= #007700]->[/COLOR]secret [COLOR= #007700]:[/COLOR] [COLOR= #DD0000]""[/COLOR]
    [COLOR= #007700]);[/COLOR]

    [COLOR= #0000BB]$key_parts[/COLOR] [COLOR= #007700]=[/COLOR] OAuthUtil[COLOR= #007700]::[/COLOR]urlencode_rfc3986[COLOR= #007700]([/COLOR][COLOR= #0000BB]$key_parts[/COLOR][COLOR= #007700]);[/COLOR]
    [COLOR= #0000BB]$key[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/implode"]implode[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]&[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$key_parts[/COLOR][COLOR= #007700]);[/COLOR]
    [COLOR= #0000BB]$request[/COLOR][COLOR= #007700]->[/COLOR]base_string [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$key[/COLOR][COLOR= #007700];[/COLOR]

    [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$key[/COLOR][COLOR= #007700];
  }
}[/COLOR]

[COLOR= #FF8000]/**
 * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in 
 * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for 
 * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a 
 * verified way to the Service Provider, in a manner which is beyond the scope of this 
 * specification.
 *   - Chapter 9.3 ("RSA-SHA1")
 */[/COLOR]
abstract [URL="http://www.php.net/class"]class[/URL] OAuthSignatureMethod_RSA_SHA1 extends OAuthSignatureMethod [COLOR= #007700]{[/COLOR]
  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] get_name[COLOR= #007700]() {[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #DD0000]"RSA-SHA1"[/COLOR][COLOR= #007700];
  }[/COLOR]

  [COLOR= #FF8000]// Up to the SP to implement this lookup of keys. Possible ideas are:
  // (1) do a lookup in a table of trusted certs keyed off of consumer
  // (2) fetch via http using a url provided by the requester
  // (3) some sort of specific discovery code based on request
  //
  // Either way should return a string representation of the certificate[/COLOR]
  [URL="http://www.php.net/protected"]protected[/URL] abstract [COLOR= #007700]function[/COLOR] fetch_public_cert[COLOR= #007700](&[/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700]);[/COLOR]

  [COLOR= #FF8000]// Up to the SP to implement this lookup of keys. Possible ideas are:
  // (1) do a lookup in a table of trusted certs keyed off of consumer
  //
  // Either way should return a string representation of the certificate[/COLOR]
  [URL="http://www.php.net/protected"]protected[/URL] abstract [COLOR= #007700]function[/COLOR] fetch_private_cert[COLOR= #007700](&[/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700]);[/COLOR]

  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] build_signature[COLOR= #007700]([/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$token[/COLOR][COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$base_string[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$request[/COLOR][COLOR= #007700]->[/COLOR]get_signature_base_string[COLOR= #007700]();[/COLOR]
    [COLOR= #0000BB]$request[/COLOR][COLOR= #007700]->[/COLOR]base_string [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$base_string[/COLOR][COLOR= #007700];[/COLOR]

    [COLOR= #FF8000]// Fetch the private key cert based on the request[/COLOR]
    [COLOR= #0000BB]$cert[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]fetch_private_cert[COLOR= #007700]([/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700]);[/COLOR]

    [COLOR= #FF8000]// Pull the private key ID from the certificate[/COLOR]
    [COLOR= #0000BB]$privatekeyid[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/openssl_get_privatekey"]openssl_get_privatekey[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$cert[/COLOR][COLOR= #007700]);[/COLOR]

    [COLOR= #FF8000]// Sign using the key[/COLOR]
    [COLOR= #0000BB]$ok[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/openssl_sign"]openssl_sign[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$base_string[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$signature[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$privatekeyid[/COLOR][COLOR= #007700]);[/COLOR]

    [COLOR= #FF8000]// Release the key resource[/COLOR]
    [URL="http://www.php.net/openssl_free_key"]openssl_free_key[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$privatekeyid[/COLOR][COLOR= #007700]);[/COLOR]

    [URL="http://www.php.net/return"]return[/URL] [URL="http://www.php.net/base64_encode"]base64_encode[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$signature[/COLOR][COLOR= #007700]);
  }[/COLOR]

  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] check_signature[COLOR= #007700]([/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$token[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$signature[/COLOR][COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$decoded_sig[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/base64_decode"]base64_decode[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$signature[/COLOR][COLOR= #007700]);[/COLOR]

    [COLOR= #0000BB]$base_string[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$request[/COLOR][COLOR= #007700]->[/COLOR]get_signature_base_string[COLOR= #007700]();[/COLOR]

    [COLOR= #FF8000]// Fetch the public key cert based on the request[/COLOR]
    [COLOR= #0000BB]$cert[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]fetch_public_cert[COLOR= #007700]([/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700]);[/COLOR]

    [COLOR= #FF8000]// Pull the public key ID from the certificate[/COLOR]
    [COLOR= #0000BB]$publickeyid[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/openssl_get_publickey"]openssl_get_publickey[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$cert[/COLOR][COLOR= #007700]);[/COLOR]

    [COLOR= #FF8000]// Check the computed signature against the one passed in the query[/COLOR]
    [COLOR= #0000BB]$ok[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/openssl_verify"]openssl_verify[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$base_string[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$decoded_sig[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$publickeyid[/COLOR][COLOR= #007700]);[/COLOR]

    [COLOR= #FF8000]// Release the key resource[/COLOR]
    [URL="http://www.php.net/openssl_free_key"]openssl_free_key[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$publickeyid[/COLOR][COLOR= #007700]);[/COLOR]

    [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$ok[/COLOR] [COLOR= #007700]==[/COLOR] [COLOR= #0000BB]1[/COLOR][COLOR= #007700];
  }
}[/COLOR]

[URL="http://www.php.net/class"]class[/URL] OAuthRequest [COLOR= #007700]{[/COLOR]
  [URL="http://www.php.net/private"]private[/URL] [COLOR= #0000BB]$parameters[/COLOR][COLOR= #007700];[/COLOR]
  [URL="http://www.php.net/private"]private[/URL] [COLOR= #0000BB]$http_method[/COLOR][COLOR= #007700];[/COLOR]
  [URL="http://www.php.net/private"]private[/URL] [COLOR= #0000BB]$http_url[/COLOR][COLOR= #007700];[/COLOR]
  [COLOR= #FF8000]// for debug purposes[/COLOR]
  [URL="http://www.php.net/public"]public[/URL] [COLOR= #0000BB]$base_string[/COLOR][COLOR= #007700];[/COLOR]
  [URL="http://www.php.net/public"]public[/URL] [URL="http://www.php.net/static"]static[/URL] [COLOR= #0000BB]$version[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]1.0[/COLOR][COLOR= #007700];[/COLOR]
  [URL="http://www.php.net/public"]public[/URL] [URL="http://www.php.net/static"]static[/URL] [COLOR= #0000BB]$POST_INPUT[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]php://input[/COLOR][COLOR= #007700];

  function[/COLOR] __construct[COLOR= #007700]([/COLOR][COLOR= #0000BB]$http_method[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$http_url[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$parameters[/COLOR][COLOR= #007700]=[/COLOR]NULL[COLOR= #007700]) {
    @[/COLOR][COLOR= #0000BB]$parameters[/COLOR] or [COLOR= #0000BB]$parameters[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]();[/COLOR]
    [COLOR= #0000BB]$parameters[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array_merge"]array_merge[/URL][COLOR= #007700]([/COLOR] OAuthUtil[COLOR= #007700]:[/COLOR][COLOR= #007700]:[/COLOR]parse_parameters[COLOR= #007700]([/COLOR][URL="http://www.php.net/parse_url"]parse_url[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$http_url[/COLOR][COLOR= #007700],[/COLOR] PHP_URL_QUERY[COLOR= #007700])),[/COLOR] [COLOR= #0000BB]$parameters[/COLOR][COLOR= #007700]);[/COLOR]
    [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]parameters [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$parameters[/COLOR][COLOR= #007700];[/COLOR]
    [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]http_method [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$http_method[/COLOR][COLOR= #007700];[/COLOR]
    [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]http_url [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$http_url[/COLOR][COLOR= #007700];
  }[/COLOR]


  [COLOR= #FF8000]/**
   * attempt to build up a request from what was passed to the server
   */[/COLOR]
  [URL="http://www.php.net/public"]public[/URL] [URL="http://www.php.net/static"]static[/URL] [COLOR= #007700]function[/COLOR] from_request[COLOR= #007700]([/COLOR][COLOR= #0000BB]$http_method[/COLOR][COLOR= #007700]=[/COLOR]NULL[COLOR= #007700],[/COLOR] [COLOR= #0000BB]$http_url[/COLOR][COLOR= #007700]=[/COLOR]NULL[COLOR= #007700],[/COLOR] [COLOR= #0000BB]$parameters[/COLOR][COLOR= #007700]=[/COLOR]NULL[COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$scheme[/COLOR] [COLOR= #007700]= (![/COLOR][URL="http://www.php.net/isset"]isset[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_SERVER[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]HTTPS[/COLOR][COLOR= #007700]]) ||[/COLOR] [COLOR= #0000BB]$_SERVER[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]HTTPS[/COLOR][COLOR= #007700]] !=[/COLOR] [COLOR= #DD0000]"on"[/COLOR][COLOR= #007700])
              ?[/COLOR] [COLOR= #DD0000]http[/COLOR]
              [COLOR= #007700]:[/COLOR] [COLOR= #DD0000]https[/COLOR][COLOR= #007700];
    @[/COLOR][COLOR= #0000BB]$http_url[/COLOR] or [COLOR= #0000BB]$http_url[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$scheme[/COLOR] [COLOR= #007700].[/COLOR]
                              [COLOR= #DD0000]://[/COLOR] [COLOR= #007700].[/COLOR] [COLOR= #0000BB]$_SERVER[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]HTTP_HOST[/COLOR][COLOR= #007700]] .[/COLOR]
                              [COLOR= #DD0000]:[/COLOR] [COLOR= #007700].[/COLOR]
                              [COLOR= #0000BB]$_SERVER[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]SERVER_PORT[/COLOR][COLOR= #007700]] .[/COLOR]
                              [COLOR= #0000BB]$_SERVER[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]REQUEST_URI[/COLOR][COLOR= #007700]];
    @[/COLOR][COLOR= #0000BB]$http_method[/COLOR] or [COLOR= #0000BB]$http_method[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_SERVER[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]REQUEST_METHOD[/COLOR][COLOR= #007700]];[/COLOR]

    [COLOR= #FF8000]// We werent handed any parameters, so lets find the ones relevant to
    // this request.
    // If you run XML-RPC or similar you should use this to provide your own
    // parsed parameter-list[/COLOR]
    [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700](![/COLOR][COLOR= #0000BB]$parameters[/COLOR][COLOR= #007700]) {[/COLOR]
      [COLOR= #FF8000]// Find request headers[/COLOR]
      [COLOR= #0000BB]$request_headers[/COLOR] [COLOR= #007700]=[/COLOR] OAuthUtil[COLOR= #007700]::[/COLOR]get_headers[COLOR= #007700]();[/COLOR]

      [COLOR= #FF8000]// Parse the query-string to find GET parameters[/COLOR]
      [COLOR= #0000BB]$parameters[/COLOR] [COLOR= #007700]=[/COLOR] OAuthUtil[COLOR= #007700]:[/COLOR][COLOR= #007700]:[/COLOR]parse_parameters[COLOR= #007700]([/COLOR][COLOR= #0000BB]$_SERVER[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]QUERY_STRING[/COLOR][COLOR= #007700]]);[/COLOR]

      [COLOR= #FF8000]// Its a POST request of the proper content-type, so parse POST
      // parameters and add those overriding any duplicates from GET[/COLOR]
      [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR][COLOR= #0000BB]$http_method[/COLOR] [COLOR= #007700]==[/COLOR] [COLOR= #DD0000]"POST"[/COLOR]
          [COLOR= #007700]&& @[/COLOR][URL="http://www.php.net/strstr"]strstr[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$request_headers[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]"Content-Type"[/COLOR][COLOR= #007700]],[/COLOR]
                     [COLOR= #DD0000]"application/x-www-form-urlencoded"[/COLOR][COLOR= #007700])
          ) {[/COLOR]
        [COLOR= #0000BB]$post_data[/COLOR] [COLOR= #007700]=[/COLOR] OAuthUtil[COLOR= #007700]:[/COLOR][COLOR= #007700]:[/COLOR]parse_parameters[COLOR= #007700]([/COLOR]
          [URL="http://www.php.net/file_get_contents"]file_get_contents[/URL][COLOR= #007700]([/COLOR]self[COLOR= #007700]:[/COLOR][COLOR= #007700]:[/COLOR][COLOR= #0000BB]$POST_INPUT[/COLOR][COLOR= #007700])
        );[/COLOR]
        [COLOR= #0000BB]$parameters[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array_merge"]array_merge[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$parameters[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$post_data[/COLOR][COLOR= #007700]);
      }[/COLOR]

      [COLOR= #FF8000]// We have a Authorization-header with OAuth data. Parse the header
      // and add those overriding any duplicates from GET or POST[/COLOR]
      [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700](@[/COLOR][URL="http://www.php.net/substr"]substr[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$request_headers[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]Authorization[/COLOR][COLOR= #007700]],[/COLOR] [COLOR= #0000BB]0[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]6[/COLOR][COLOR= #007700]) ==[/COLOR] [COLOR= #DD0000]"OAuth "[/COLOR][COLOR= #007700]) {[/COLOR]
        [COLOR= #0000BB]$header_parameters[/COLOR] [COLOR= #007700]=[/COLOR] OAuthUtil[COLOR= #007700]:[/COLOR]SMILEYYYYYYYYYYYBEGIN[COLOR= #007700]:[/COLOR]split_header[COLOR= #007700]([/COLOR]
          [COLOR= #0000BB]$request_headers[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]Authorization[/COLOR][COLOR= #007700]]
        );[/COLOR]
        [COLOR= #0000BB]$parameters[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array_merge"]array_merge[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$parameters[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$header_parameters[/COLOR][COLOR= #007700]);
      }

    }[/COLOR]

    [URL="http://www.php.net/return"]return[/URL] [COLOR= #007700]new[/COLOR] OAuthRequest[COLOR= #007700]([/COLOR][COLOR= #0000BB]$http_method[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$http_url[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$parameters[/COLOR][COLOR= #007700]);
  }[/COLOR]

  [COLOR= #FF8000]/**
   * pretty much a helper function to set up the request
   */[/COLOR]
  [URL="http://www.php.net/public"]public[/URL] [URL="http://www.php.net/static"]static[/URL] [COLOR= #007700]function[/COLOR] from_consumer_and_token[COLOR= #007700]([/COLOR][COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$token[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$http_method[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$http_url[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$parameters[/COLOR][COLOR= #007700]=[/COLOR]NULL[COLOR= #007700]) {
    @[/COLOR][COLOR= #0000BB]$parameters[/COLOR] or [COLOR= #0000BB]$parameters[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]();[/COLOR]
    [COLOR= #0000BB]$defaults[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"oauth_version"[/COLOR] [COLOR= #007700]=>[/COLOR] OAuthRequest[COLOR= #007700]:[/COLOR][COLOR= #007700]:[/COLOR][COLOR= #0000BB]$version[/COLOR][COLOR= #007700],[/COLOR]
                      [COLOR= #DD0000]"oauth_nonce"[/COLOR] [COLOR= #007700]=>[/COLOR] OAuthRequest[COLOR= #007700]::[/COLOR]generate_nonce[COLOR= #007700](),[/COLOR]
                      [COLOR= #DD0000]"oauth_timestamp"[/COLOR] [COLOR= #007700]=>[/COLOR] OAuthRequest[COLOR= #007700]::[/COLOR]generate_timestamp[COLOR= #007700](),[/COLOR]
                      [COLOR= #DD0000]"oauth_consumer_key"[/COLOR] [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700]->[/COLOR][URL="http://www.php.net/key"]key[/URL][COLOR= #007700]);[/COLOR]
    [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR][COLOR= #0000BB]$token[/COLOR][COLOR= #007700])[/COLOR]
      [COLOR= #0000BB]$defaults[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]oauth_token[/COLOR][COLOR= #007700]] =[/COLOR] [COLOR= #0000BB]$token[/COLOR][COLOR= #007700]->[/COLOR][URL="http://www.php.net/key"]key[/URL][COLOR= #007700];[/COLOR]

    [COLOR= #0000BB]$parameters[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array_merge"]array_merge[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$defaults[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$parameters[/COLOR][COLOR= #007700]);[/COLOR]

    [URL="http://www.php.net/return"]return[/URL] [COLOR= #007700]new[/COLOR] OAuthRequest[COLOR= #007700]([/COLOR][COLOR= #0000BB]$http_method[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$http_url[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$parameters[/COLOR][COLOR= #007700]);
  }[/COLOR]

  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] set_parameter[COLOR= #007700]([/COLOR][COLOR= #0000BB]$name[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$value[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$allow_duplicates[/COLOR] [COLOR= #007700]=[/COLOR] true[COLOR= #007700]) {[/COLOR]
    [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR][COLOR= #0000BB]$allow_duplicates[/COLOR] [COLOR= #007700]&&[/COLOR] [URL="http://www.php.net/isset"]isset[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]parameters[COLOR= #007700][[/COLOR][COLOR= #0000BB]$name[/COLOR][COLOR= #007700]])) {[/COLOR]
      [COLOR= #FF8000]// We have already added parameter(s) with this name, so add to the list[/COLOR]
      [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR][URL="http://www.php.net/is_scalar"]is_scalar[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]parameters[COLOR= #007700][[/COLOR][COLOR= #0000BB]$name[/COLOR][COLOR= #007700]])) {[/COLOR]
        [COLOR= #FF8000]// This is the first duplicate, so transform scalar (string)
        // into an array so we can add the duplicates[/COLOR]
        [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]parameters[COLOR= #007700][[/COLOR][COLOR= #0000BB]$name[/COLOR][COLOR= #007700]] =[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]parameters[COLOR= #007700][[/COLOR][COLOR= #0000BB]$name[/COLOR][COLOR= #007700]]);
      }[/COLOR]

      [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]parameters[COLOR= #007700][[/COLOR][COLOR= #0000BB]$name[/COLOR][COLOR= #007700]][] =[/COLOR] [COLOR= #0000BB]$value[/COLOR][COLOR= #007700];
    }[/COLOR] [URL="http://www.php.net/else"]else[/URL] [COLOR= #007700]{[/COLOR]
      [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]parameters[COLOR= #007700][[/COLOR][COLOR= #0000BB]$name[/COLOR][COLOR= #007700]] =[/COLOR] [COLOR= #0000BB]$value[/COLOR][COLOR= #007700];
    }
  }[/COLOR]

  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] get_parameter[COLOR= #007700]([/COLOR][COLOR= #0000BB]$name[/COLOR][COLOR= #007700]) {[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [URL="http://www.php.net/isset"]isset[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]parameters[COLOR= #007700][[/COLOR][COLOR= #0000BB]$name[/COLOR][COLOR= #007700]]) ?[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]parameters[COLOR= #007700][[/COLOR][COLOR= #0000BB]$name[/COLOR][COLOR= #007700]] :[/COLOR] null[COLOR= #007700];
  }[/COLOR]

  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] get_parameters[COLOR= #007700]() {[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]parameters[COLOR= #007700];
  }[/COLOR]

  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] unset_parameter[COLOR= #007700]([/COLOR][COLOR= #0000BB]$name[/COLOR][COLOR= #007700]) {[/COLOR]
    [URL="http://www.php.net/unset"]unset[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]parameters[COLOR= #007700][[/COLOR][COLOR= #0000BB]$name[/COLOR][COLOR= #007700]]);
  }[/COLOR]

  [COLOR= #FF8000]/**
   * The request parameters, sorted and concatenated into a normalized string.
   * @return string
   */[/COLOR]
  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] get_signable_parameters[COLOR= #007700]() {[/COLOR]
    [COLOR= #FF8000]// Grab all parameters[/COLOR]
    [COLOR= #0000BB]$params[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]parameters[COLOR= #007700];[/COLOR]

    [COLOR= #FF8000]// Remove oauth_signature if present
    // Ref: Spec: 9.1.1 ("The oauth_signature parameter MUST be excluded.")[/COLOR]
    [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR][URL="http://www.php.net/isset"]isset[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$params[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]oauth_signature[/COLOR][COLOR= #007700]])) {[/COLOR]
      [URL="http://www.php.net/unset"]unset[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$params[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]oauth_signature[/COLOR][COLOR= #007700]]);
    }[/COLOR]

    [URL="http://www.php.net/return"]return[/URL] OAuthUtil[COLOR= #007700]::[/COLOR]build_http_query[COLOR= #007700]([/COLOR][COLOR= #0000BB]$params[/COLOR][COLOR= #007700]);
  }[/COLOR]

  [COLOR= #FF8000]/**
   * Returns the base string of this request
   *
   * The base string defined as the method, the url
   * and the parameters (normalized), each urlencoded
   * and the concated with &.
   */[/COLOR]
  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] get_signature_base_string[COLOR= #007700]() {[/COLOR]
    [COLOR= #0000BB]$parts[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]([/COLOR]
      [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]get_normalized_http_method[COLOR= #007700](),[/COLOR]
      [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]get_normalized_http_url[COLOR= #007700](),[/COLOR]
      [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]get_signable_parameters[COLOR= #007700]()
    );[/COLOR]

    [COLOR= #0000BB]$parts[/COLOR] [COLOR= #007700]=[/COLOR] OAuthUtil[COLOR= #007700]::[/COLOR]urlencode_rfc3986[COLOR= #007700]([/COLOR][COLOR= #0000BB]$parts[/COLOR][COLOR= #007700]);[/COLOR]

    [URL="http://www.php.net/return"]return[/URL] [URL="http://www.php.net/implode"]implode[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]&[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$parts[/COLOR][COLOR= #007700]);
  }[/COLOR]

  [COLOR= #FF8000]/**
   * just uppercases the http method
   */[/COLOR]
  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] get_normalized_http_method[COLOR= #007700]() {[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [URL="http://www.php.net/strtoupper"]strtoupper[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]http_method[COLOR= #007700]);
  }[/COLOR]

  [COLOR= #FF8000]/**
   * parses the url and rebuilds it to be
   * scheme://host/path
   */[/COLOR]
  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] get_normalized_http_url[COLOR= #007700]() {[/COLOR]
    [COLOR= #0000BB]$parts[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/parse_url"]parse_url[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]http_url[COLOR= #007700]);[/COLOR]

    [COLOR= #0000BB]$port[/COLOR] [COLOR= #007700]= @[/COLOR][COLOR= #0000BB]$parts[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]port[/COLOR][COLOR= #007700]];[/COLOR]
    [COLOR= #0000BB]$scheme[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$parts[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]scheme[/COLOR][COLOR= #007700]];[/COLOR]
    [COLOR= #0000BB]$host[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$parts[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]host[/COLOR][COLOR= #007700]];[/COLOR]
    [COLOR= #0000BB]$path[/COLOR] [COLOR= #007700]= @[/COLOR][COLOR= #0000BB]$parts[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]path[/COLOR][COLOR= #007700]];[/COLOR]

    [COLOR= #0000BB]$port[/COLOR] or [COLOR= #0000BB]$port[/COLOR] [COLOR= #007700]= ([/COLOR][COLOR= #0000BB]$scheme[/COLOR] [COLOR= #007700]==[/COLOR] [COLOR= #DD0000]https[/COLOR][COLOR= #007700]) ?[/COLOR] [COLOR= #DD0000]443[/COLOR] [COLOR= #007700]:[/COLOR] [COLOR= #DD0000]80[/COLOR][COLOR= #007700];[/COLOR]

    [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700](([/COLOR][COLOR= #0000BB]$scheme[/COLOR] [COLOR= #007700]==[/COLOR] [COLOR= #DD0000]https[/COLOR] [COLOR= #007700]&&[/COLOR] [COLOR= #0000BB]$port[/COLOR] [COLOR= #007700]!=[/COLOR] [COLOR= #DD0000]443[/COLOR][COLOR= #007700])
        || ([/COLOR][COLOR= #0000BB]$scheme[/COLOR] [COLOR= #007700]==[/COLOR] [COLOR= #DD0000]http[/COLOR] [COLOR= #007700]&&[/COLOR] [COLOR= #0000BB]$port[/COLOR] [COLOR= #007700]!=[/COLOR] [COLOR= #DD0000]80[/COLOR][COLOR= #007700])) {[/COLOR]
      [COLOR= #0000BB]$host[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]"$host:$port"[/COLOR][COLOR= #007700];
    }[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #DD0000]"$scheme://$host$path"[/COLOR][COLOR= #007700];
  }[/COLOR]

  [COLOR= #FF8000]/**
   * builds a url usable for a GET request
   */[/COLOR]
  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] to_url[COLOR= #007700]() {[/COLOR]
    [COLOR= #0000BB]$post_data[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]to_postdata[COLOR= #007700]();[/COLOR]
    [COLOR= #0000BB]$out[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]get_normalized_http_url[COLOR= #007700]();[/COLOR]
    [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR][COLOR= #0000BB]$post_data[/COLOR][COLOR= #007700]) {[/COLOR]
      [COLOR= #0000BB]$out[/COLOR] [COLOR= #007700].=[/COLOR] [COLOR= #DD0000]?[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$post_data[/COLOR][COLOR= #007700];
    }[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$out[/COLOR][COLOR= #007700];
  }[/COLOR]

  [COLOR= #FF8000]/**
   * builds the data one would send in a POST request
   */[/COLOR]
  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] to_postdata[COLOR= #007700]() {[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] OAuthUtil[COLOR= #007700]::[/COLOR]build_http_query[COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]parameters[COLOR= #007700]);
  }[/COLOR]

  [COLOR= #FF8000]/**
   * builds the Authorization: header
   */[/COLOR]
  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] to_header[COLOR= #007700]([/COLOR][COLOR= #0000BB]$realm[/COLOR][COLOR= #007700]=[/COLOR]null[COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$first[/COLOR] [COLOR= #007700]=[/COLOR] true[COLOR= #007700];[/COLOR]
    [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$realm[/COLOR][COLOR= #007700]) {[/COLOR]
      [COLOR= #0000BB]$out[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]Authorization: OAuth realm="[/COLOR] [COLOR= #007700].[/COLOR] OAuthUtil[COLOR= #007700]::[/COLOR]urlencode_rfc3986[COLOR= #007700]([/COLOR][COLOR= #0000BB]$realm[/COLOR][COLOR= #007700]) .[/COLOR] [COLOR= #DD0000]"[/COLOR][COLOR= #007700];[/COLOR]
      [COLOR= #0000BB]$first[/COLOR] [COLOR= #007700]=[/COLOR] false[COLOR= #007700];
    }[/COLOR] [URL="http://www.php.net/else"]else[/URL]
      [COLOR= #0000BB]$out[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]Authorization: OAuth[/COLOR][COLOR= #007700];[/COLOR]

    [COLOR= #0000BB]$total[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]();[/COLOR]
    [URL="http://www.php.net/foreach"]foreach[/URL] [COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]parameters [COLOR= #007700]as[/COLOR] [COLOR= #0000BB]$k[/COLOR] [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]$v[/COLOR][COLOR= #007700]) {[/COLOR]
      [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR][URL="http://www.php.net/substr"]substr[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$k[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]0[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]5[/COLOR][COLOR= #007700]) !=[/COLOR] [COLOR= #DD0000]"oauth"[/COLOR][COLOR= #007700])[/COLOR] [URL="http://www.php.net/continue"]continue[/URL][COLOR= #007700];[/COLOR]
      [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR][URL="http://www.php.net/is_array"]is_array[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$v[/COLOR][COLOR= #007700])) {[/COLOR]
        throw [COLOR= #007700]new[/COLOR] OAuthException[COLOR= #007700]([/COLOR][COLOR= #DD0000]Arrays not supported in headers[/COLOR][COLOR= #007700]);
      }[/COLOR]
      [COLOR= #0000BB]$out[/COLOR] [COLOR= #007700].= ([/COLOR][COLOR= #0000BB]$first[/COLOR][COLOR= #007700]) ?[/COLOR] [COLOR= #DD0000] [/COLOR] [COLOR= #007700]:[/COLOR] [COLOR= #DD0000],[/COLOR][COLOR= #007700];[/COLOR]
      [COLOR= #0000BB]$out[/COLOR] [COLOR= #007700].=[/COLOR] OAuthUtil[COLOR= #007700]::[/COLOR]urlencode_rfc3986[COLOR= #007700]([/COLOR][COLOR= #0000BB]$k[/COLOR][COLOR= #007700]) .[/COLOR]
              [COLOR= #DD0000]="[/COLOR] [COLOR= #007700].[/COLOR]
              OAuthUtil[COLOR= #007700]::[/COLOR]urlencode_rfc3986[COLOR= #007700]([/COLOR][COLOR= #0000BB]$v[/COLOR][COLOR= #007700]) .[/COLOR]
              [COLOR= #DD0000]"[/COLOR][COLOR= #007700];[/COLOR]
      [COLOR= #0000BB]$first[/COLOR] [COLOR= #007700]=[/COLOR] false[COLOR= #007700];
    }[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$out[/COLOR][COLOR= #007700];
  }[/COLOR]

  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] __toString[COLOR= #007700]() {[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]to_url[COLOR= #007700]();
  }[/COLOR]


  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] sign_request[COLOR= #007700]([/COLOR][COLOR= #0000BB]$signature_method[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$token[/COLOR][COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]set_parameter[COLOR= #007700]([/COLOR]
      [COLOR= #DD0000]"oauth_signature_method"[/COLOR][COLOR= #007700],[/COLOR]
      [COLOR= #0000BB]$signature_method[/COLOR][COLOR= #007700]->[/COLOR]get_name[COLOR= #007700](),[/COLOR]
      false
    [COLOR= #007700]);[/COLOR]
    [COLOR= #0000BB]$signature[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]build_signature[COLOR= #007700]([/COLOR][COLOR= #0000BB]$signature_method[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$token[/COLOR][COLOR= #007700]);[/COLOR]
    [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]set_parameter[COLOR= #007700]([/COLOR][COLOR= #DD0000]"oauth_signature"[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$signature[/COLOR][COLOR= #007700],[/COLOR] false[COLOR= #007700]);
  }[/COLOR]

  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] build_signature[COLOR= #007700]([/COLOR][COLOR= #0000BB]$signature_method[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$token[/COLOR][COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$signature[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$signature_method[/COLOR][COLOR= #007700]->[/COLOR]build_signature[COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$token[/COLOR][COLOR= #007700]);[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$signature[/COLOR][COLOR= #007700];
  }[/COLOR]

  [COLOR= #FF8000]/**
   * util function: current timestamp
   */[/COLOR]
  [URL="http://www.php.net/private"]private[/URL] [URL="http://www.php.net/static"]static[/URL] [COLOR= #007700]function[/COLOR] generate_timestamp[COLOR= #007700]() {[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [URL="http://www.php.net/time"]time[/URL][COLOR= #007700]();
  }[/COLOR]

  [COLOR= #FF8000]/**
   * util function: current nonce
   */[/COLOR]
  [URL="http://www.php.net/private"]private[/URL] [URL="http://www.php.net/static"]static[/URL] [COLOR= #007700]function[/COLOR] generate_nonce[COLOR= #007700]() {[/COLOR]
    [COLOR= #0000BB]$mt[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/microtime"]microtime[/URL][COLOR= #007700]();[/COLOR]
    [COLOR= #0000BB]$rand[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mt_rand"]mt_rand[/URL][COLOR= #007700]();[/COLOR]

    [URL="http://www.php.net/return"]return[/URL] [URL="http://www.php.net/md5"]md5[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$mt[/COLOR] [COLOR= #007700].[/COLOR] [COLOR= #0000BB]$rand[/COLOR][COLOR= #007700]);[/COLOR] [COLOR= #FF8000]// md5s look nicer than numbers[/COLOR]
  [COLOR= #007700]}
}[/COLOR]

[URL="http://www.php.net/class"]class[/URL] OAuthServer [COLOR= #007700]{[/COLOR]
  [URL="http://www.php.net/protected"]protected[/URL] [COLOR= #0000BB]$timestamp_threshold[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]300[/COLOR][COLOR= #007700];[/COLOR] [COLOR= #FF8000]// in seconds, five minutes[/COLOR]
  [URL="http://www.php.net/protected"]protected[/URL] [COLOR= #0000BB]$version[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]1.0[/COLOR][COLOR= #007700];[/COLOR]             [COLOR= #FF8000]// hi blaine[/COLOR]
  [URL="http://www.php.net/protected"]protected[/URL] [COLOR= #0000BB]$signature_methods[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]();[/COLOR]

  [URL="http://www.php.net/protected"]protected[/URL] [COLOR= #0000BB]$data_store[/COLOR][COLOR= #007700];

  function[/COLOR] __construct[COLOR= #007700]([/COLOR][COLOR= #0000BB]$data_store[/COLOR][COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]data_store [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$data_store[/COLOR][COLOR= #007700];
  }[/COLOR]

  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] add_signature_method[COLOR= #007700]([/COLOR][COLOR= #0000BB]$signature_method[/COLOR][COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]signature_methods[COLOR= #007700][[/COLOR][COLOR= #0000BB]$signature_method[/COLOR][COLOR= #007700]->[/COLOR]get_name[COLOR= #007700]()] =[/COLOR]
      [COLOR= #0000BB]$signature_method[/COLOR][COLOR= #007700];
  }[/COLOR]

  [COLOR= #FF8000]// high level functions

  /**
   * process a request_token request
   * returns the request token on success
   */[/COLOR]
  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] fetch_request_token[COLOR= #007700](&[/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]get_version[COLOR= #007700]([/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700]);[/COLOR]

    [COLOR= #0000BB]$consumer[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]get_consumer[COLOR= #007700]([/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700]);[/COLOR]

    [COLOR= #FF8000]// no token required for the initial token request[/COLOR]
    [COLOR= #0000BB]$token[/COLOR] [COLOR= #007700]=[/COLOR] NULL[COLOR= #007700];[/COLOR]

    [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]check_signature[COLOR= #007700]([/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$token[/COLOR][COLOR= #007700]);[/COLOR]

    [COLOR= #FF8000]// Rev A change[/COLOR]
    [COLOR= #0000BB]$callback[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$request[/COLOR][COLOR= #007700]->[/COLOR]get_parameter[COLOR= #007700]([/COLOR][COLOR= #DD0000]oauth_callback[/COLOR][COLOR= #007700]);[/COLOR]
    [COLOR= #0000BB]$new_token[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]data_store[COLOR= #007700]->[/COLOR]new_request_token[COLOR= #007700]([/COLOR][COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$callback[/COLOR][COLOR= #007700]);[/COLOR]

    [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$new_token[/COLOR][COLOR= #007700];
  }[/COLOR]

  [COLOR= #FF8000]/**
   * process an access_token request
   * returns the access token on success
   */[/COLOR]
  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] fetch_access_token[COLOR= #007700](&[/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]get_version[COLOR= #007700]([/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700]);[/COLOR]

    [COLOR= #0000BB]$consumer[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]get_consumer[COLOR= #007700]([/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700]);[/COLOR]

    [COLOR= #FF8000]// requires authorized request token[/COLOR]
    [COLOR= #0000BB]$token[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]get_token[COLOR= #007700]([/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]"request"[/COLOR][COLOR= #007700]);[/COLOR]

    [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]check_signature[COLOR= #007700]([/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$token[/COLOR][COLOR= #007700]);[/COLOR]

    [COLOR= #FF8000]// Rev A change[/COLOR]
    [COLOR= #0000BB]$verifier[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$request[/COLOR][COLOR= #007700]->[/COLOR]get_parameter[COLOR= #007700]([/COLOR][COLOR= #DD0000]oauth_verifier[/COLOR][COLOR= #007700]);[/COLOR]
    [COLOR= #0000BB]$new_token[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]data_store[COLOR= #007700]->[/COLOR]new_access_token[COLOR= #007700]([/COLOR][COLOR= #0000BB]$token[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$verifier[/COLOR][COLOR= #007700]);[/COLOR]

    [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$new_token[/COLOR][COLOR= #007700];
  }[/COLOR]

  [COLOR= #FF8000]/**
   * verify an api call, checks all the parameters
   */[/COLOR]
  [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] verify_request[COLOR= #007700](&[/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]get_version[COLOR= #007700]([/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700]);[/COLOR]
    [COLOR= #0000BB]$consumer[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]get_consumer[COLOR= #007700]([/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700]);[/COLOR]
    [COLOR= #0000BB]$token[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]get_token[COLOR= #007700]([/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]"access"[/COLOR][COLOR= #007700]);[/COLOR]
    [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]check_signature[COLOR= #007700]([/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$token[/COLOR][COLOR= #007700]);[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$token[/COLOR][COLOR= #007700]);
  }[/COLOR]

  [COLOR= #FF8000]// Internals from here
  /**
   * version 1
   */[/COLOR]
  [URL="http://www.php.net/private"]private[/URL] [COLOR= #007700]function[/COLOR] get_version[COLOR= #007700](&[/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$version[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$request[/COLOR][COLOR= #007700]->[/COLOR]get_parameter[COLOR= #007700]([/COLOR][COLOR= #DD0000]"oauth_version"[/COLOR][COLOR= #007700]);[/COLOR]
    [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700](![/COLOR][COLOR= #0000BB]$version[/COLOR][COLOR= #007700]) {[/COLOR]
      [COLOR= #FF8000]// Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present. 
      // Chapter 7.0 ("Accessing Protected Ressources")[/COLOR]
      [COLOR= #0000BB]$version[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]1.0[/COLOR][COLOR= #007700];
    }[/COLOR]
    [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR][COLOR= #0000BB]$version[/COLOR] [COLOR= #007700]!==[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]version[COLOR= #007700]) {[/COLOR]
      throw [COLOR= #007700]new[/COLOR] OAuthException[COLOR= #007700]([/COLOR][COLOR= #DD0000]"OAuth version $version not supported"[/COLOR][COLOR= #007700]);
    }[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$version[/COLOR][COLOR= #007700];
  }[/COLOR]

  [COLOR= #FF8000]/**
   * figure out the signature with some defaults
   */[/COLOR]
  [URL="http://www.php.net/private"]private[/URL] [COLOR= #007700]function[/COLOR] get_signature_method[COLOR= #007700](&[/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$signature_method[/COLOR] [COLOR= #007700]=
        @[/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700]->[/COLOR]get_parameter[COLOR= #007700]([/COLOR][COLOR= #DD0000]"oauth_signature_method"[/COLOR][COLOR= #007700]);[/COLOR]

    [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700](![/COLOR][COLOR= #0000BB]$signature_method[/COLOR][COLOR= #007700]) {[/COLOR]
      [COLOR= #FF8000]// According to chapter 7 ("Accessing Protected Ressources") the signature-method
      // parameter is required, and we cant just fallback to PLAINTEXT[/COLOR]
      throw [COLOR= #007700]new[/COLOR] OAuthException[COLOR= #007700]([/COLOR][COLOR= #DD0000]No signature method parameter. This parameter is required[/COLOR][COLOR= #007700]);
    }[/COLOR]

    [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700](![/COLOR][URL="http://www.php.net/in_array"]in_array[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$signature_method[/COLOR][COLOR= #007700],[/COLOR]
                  [URL="http://www.php.net/array_keys"]array_keys[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]signature_methods[COLOR= #007700]))) {[/COLOR]
      throw [COLOR= #007700]new[/COLOR] OAuthException[COLOR= #007700]([/COLOR]
        [COLOR= #DD0000]"Signature method $signature_method not supported "[/COLOR] [COLOR= #007700].[/COLOR]
        [COLOR= #DD0000]"try one of the following: "[/COLOR] [COLOR= #007700].[/COLOR]
        [URL="http://www.php.net/implode"]implode[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]", "[/COLOR][COLOR= #007700],[/COLOR] [URL="http://www.php.net/array_keys"]array_keys[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]signature_methods[COLOR= #007700]))
      );
    }[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]signature_methods[COLOR= #007700][[/COLOR][COLOR= #0000BB]$signature_method[/COLOR][COLOR= #007700]];
  }[/COLOR]

  [COLOR= #FF8000]/**
   * try to find the consumer for the provided requests consumer key
   */[/COLOR]
  [URL="http://www.php.net/private"]private[/URL] [COLOR= #007700]function[/COLOR] get_consumer[COLOR= #007700](&[/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$consumer_key[/COLOR] [COLOR= #007700]= @[/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700]->[/COLOR]get_parameter[COLOR= #007700]([/COLOR][COLOR= #DD0000]"oauth_consumer_key"[/COLOR][COLOR= #007700]);[/COLOR]
    [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700](![/COLOR][COLOR= #0000BB]$consumer_key[/COLOR][COLOR= #007700]) {[/COLOR]
      throw [COLOR= #007700]new[/COLOR] OAuthException[COLOR= #007700]([/COLOR][COLOR= #DD0000]"Invalid consumer key"[/COLOR][COLOR= #007700]);
    }[/COLOR]

    [COLOR= #0000BB]$consumer[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]data_store[COLOR= #007700]->[/COLOR]lookup_consumer[COLOR= #007700]([/COLOR][COLOR= #0000BB]$consumer_key[/COLOR][COLOR= #007700]);[/COLOR]
    [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700](![/COLOR][COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700]) {[/COLOR]
      throw [COLOR= #007700]new[/COLOR] OAuthException[COLOR= #007700]([/COLOR][COLOR= #DD0000]"Invalid consumer"[/COLOR][COLOR= #007700]);
    }[/COLOR]

    [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700];
  }[/COLOR]

  [COLOR= #FF8000]/**
   * try to find the token for the provided requests token key
   */[/COLOR]
  [URL="http://www.php.net/private"]private[/URL] [COLOR= #007700]function[/COLOR] get_token[COLOR= #007700](&[/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$token_type[/COLOR][COLOR= #007700]=[/COLOR][COLOR= #DD0000]"access"[/COLOR][COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$token_field[/COLOR] [COLOR= #007700]= @[/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700]->[/COLOR]get_parameter[COLOR= #007700]([/COLOR][COLOR= #DD0000]oauth_token[/COLOR][COLOR= #007700]);[/COLOR]
    [COLOR= #0000BB]$token[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]data_store[COLOR= #007700]->[/COLOR]lookup_token[COLOR= #007700]([/COLOR]
      [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$token_type[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$token_field[/COLOR]
    [COLOR= #007700]);[/COLOR]
    [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700](![/COLOR][COLOR= #0000BB]$token[/COLOR][COLOR= #007700]) {[/COLOR]
      throw [COLOR= #007700]new[/COLOR] OAuthException[COLOR= #007700]([/COLOR][COLOR= #DD0000]"Invalid $token_type token: $token_field"[/COLOR][COLOR= #007700]);
    }[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$token[/COLOR][COLOR= #007700];
  }[/COLOR]

  [COLOR= #FF8000]/**
   * all-in-one function to check the signature on a request
   * should guess the signature method appropriately
   */[/COLOR]
  [URL="http://www.php.net/private"]private[/URL] [COLOR= #007700]function[/COLOR] check_signature[COLOR= #007700](&[/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$token[/COLOR][COLOR= #007700]) {[/COLOR]
    [COLOR= #FF8000]// this should probably be in a different method[/COLOR]
    [COLOR= #0000BB]$timestamp[/COLOR] [COLOR= #007700]= @[/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700]->[/COLOR]get_parameter[COLOR= #007700]([/COLOR][COLOR= #DD0000]oauth_timestamp[/COLOR][COLOR= #007700]);[/COLOR]
    [COLOR= #0000BB]$nonce[/COLOR] [COLOR= #007700]= @[/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700]->[/COLOR]get_parameter[COLOR= #007700]([/COLOR][COLOR= #DD0000]oauth_nonce[/COLOR][COLOR= #007700]);[/COLOR]

    [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]check_timestamp[COLOR= #007700]([/COLOR][COLOR= #0000BB]$timestamp[/COLOR][COLOR= #007700]);[/COLOR]
    [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]check_nonce[COLOR= #007700]([/COLOR][COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$token[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$nonce[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$timestamp[/COLOR][COLOR= #007700]);[/COLOR]

    [COLOR= #0000BB]$signature_method[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]get_signature_method[COLOR= #007700]([/COLOR][COLOR= #0000BB]$request[/COLOR][COLOR= #007700]);[/COLOR]

    [COLOR= #0000BB]$signature[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$request[/COLOR][COLOR= #007700]->[/COLOR]get_parameter[COLOR= #007700]([/COLOR][COLOR= #DD0000]oauth_signature[/COLOR][COLOR= #007700]);[/COLOR]
    [COLOR= #0000BB]$valid_sig[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$signature_method[/COLOR][COLOR= #007700]->[/COLOR]check_signature[COLOR= #007700]([/COLOR]
      [COLOR= #0000BB]$request[/COLOR][COLOR= #007700],[/COLOR]
      [COLOR= #0000BB]$consumer[/COLOR][COLOR= #007700],[/COLOR]
      [COLOR= #0000BB]$token[/COLOR][COLOR= #007700],[/COLOR]
      [COLOR= #0000BB]$signature[/COLOR]
    [COLOR= #007700]);[/COLOR]

    [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700](![/COLOR][COLOR= #0000BB]$valid_sig[/COLOR][COLOR= #007700]) {[/COLOR]
      throw [COLOR= #007700]new[/COLOR] OAuthException[COLOR= #007700]([/COLOR][COLOR= #DD0000]"Invalid signature"[/COLOR][COLOR= #007700]);
    }
  }[/COLOR]

  [COLOR= #FF8000]/**
   * check that the timestamp is new enough
   */[/COLOR]
  [URL="http://www.php.net/private"]private[/URL] [COLOR= #007700]function[/COLOR] check_timestamp[COLOR= #007700]([/COLOR][COLOR= #0000BB]$timestamp[/COLOR][COLOR= #007700]) {[/COLOR]
    [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]( ![/COLOR] [COLOR= #0000BB]$timestamp[/COLOR] [COLOR= #007700])[/COLOR]
      throw [COLOR= #007700]new[/COLOR] OAuthException[COLOR= #007700]([/COLOR]
        [COLOR= #DD0000]Missing timestamp parameter. The parameter is required[/COLOR]
      [COLOR= #007700]);[/COLOR]
    
    [COLOR= #FF8000]// verify that timestamp is recentish[/COLOR]
    [COLOR= #0000BB]$now[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/time"]time[/URL][COLOR= #007700]();[/COLOR]
    [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR][URL="http://www.php.net/abs"]abs[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$now[/COLOR] [COLOR= #007700]-[/COLOR] [COLOR= #0000BB]$timestamp[/COLOR][COLOR= #007700]) >[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]timestamp_threshold[COLOR= #007700]) {[/
0
Shahiem

Lid · Topicstarter

Berichten
20.364
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Bump
0
Berichten
14.363
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Pfff zet die code is in n spoiler aub.
0
Shahiem

Lid · Topicstarter

Berichten
20.364
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ga ergens anders mensen lastig vallen. Je gedraagt je echt naar je leeftijd.
0
Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
Off-topic: Misschien wil je even die code in een spoiler doen? Zou wat handige zijn.
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren