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
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]) {[/