Modules
abstract Kohana_OAuth
OAuth Library
Class declared in MODPATH/oauth/classes/kohana/oauth.php on line 12.
Constants
- None
Properties
Properties
public static
string$versionOAuth complaince version
string(3) "1.0"
Methods
public static normalize_params( [ array $params = NULL ] ) (defined in Kohana_OAuth)
Normalize all request parameters into a string.
$query = OAuth::normalize_params($params);
This method implements OAuth 1.0 Spec 9.1.1.
Parameters
-
array$params = NULL - Request parameters
Tags
Return Values
string
Source Code
public static function normalize_params(array $params = NULL)
{
if ( ! $params)
{
// Nothing to do
return '';
}
// Encode the parameter keys and values
$keys = OAuth::urlencode(array_keys($params));
$values = OAuth::urlencode(array_values($params));
// Recombine the parameters
$params = array_combine($keys, $values);
// OAuth Spec 9.1.1 (1)
// "Parameters are sorted by name, using lexicographical byte value ordering."
uksort($params, 'strcmp');
// Create a new query string
$query = array();
foreach ($params as $name => $value)
{
if (is_array($value))
{
// OAuth Spec 9.1.1 (1)
// "If two or more parameters share the same name, they are sorted by their value."
$value = natsort($value);
foreach ($value as $duplicate)
{
$query[] = $name.'='.$duplicate;
}
}
else
{
$query[] = $name.'='.$value;
}
}
return implode('&', $query);
}
public static parse_params( string $params ) (defined in Kohana_OAuth)
Parse the parameters in a string and return an array. Duplicates are converted into indexed arrays.
// Parsed: array('a' => '1', 'b' => '2', 'c' => '3')
$params = OAuth::parse_params('a=1,b=2,c=3');
// Parsed: array('a' => array('1', '2'), 'c' => '3')
$params = OAuth::parse_params('a=1,a=2,c=3');
Parameters
-
string$params required - Parameter string
Return Values
array
Source Code
public static function parse_params($params)
{
// Split the parameters by &
$params = explode('&', trim($params));
// Create an array of parsed parameters
$parsed = array();
foreach ($params as $param)
{
// Split the parameter into name and value
list($name, $value) = explode('=', $param, 2);
// Decode the name and value
$name = OAuth::urldecode($name);
$value = OAuth::urldecode($value);
if (isset($parsed[$name]))
{
if ( ! is_array($parsed[$name]))
{
// Convert the parameter to an array
$parsed[$name] = array($parsed[$name]);
}
// Add a new duplicate parameter
$parsed[$name][] = $value;
}
else
{
// Add a new parameter
$parsed[$name] = $value;
}
}
return $parsed;
}
public static parse_url( string $url ) (defined in Kohana_OAuth)
Parse the query string out of the URL and return it as parameters. All GET parameters must be removed from the request URL when building the base string and added to the request parameters.
// parsed parameters: array('oauth_key' => 'abcdef123456789')
list($url, $params) = OAuth::parse_url('http://example.com/oauth/access?oauth_key=abcdef123456789');
This implements OAuth Spec 9.1.1.
Parameters
-
string$url required - URL to parse
Tags
Return Values
array- (clean_url, params)
Source Code
public static function parse_url($url)
{
if ($query = parse_url($url, PHP_URL_QUERY))
{
// Remove the query string from the URL
list($url) = explode('?', $url, 2);
// Parse the query string as request parameters
$params = OAuth::parse_params($query);
}
else
{
// No parameters are present
$params = array();
}
return array($url, $params);
}
public static urldecode( mixed $input ) (defined in Kohana_OAuth)
RFC3986 complaint version of urldecode. Passing an array will decode all of the values in the array. Array keys will not be encoded.
$input = OAuth::urldecode($input);
Multi-dimensional arrays are not allowed!
This method implements OAuth 1.0 Spec 5.1.
Parameters
-
mixed$input required - Input string or array
Return Values
mixed
Source Code
public static function urldecode($input)
{
if (is_array($input))
{
// Decode the values of the array
return array_map(array('OAuth', 'urldecode'), $input);
}
// Decode the input
return rawurldecode($input);
}
public static urlencode( mixed $input ) (defined in Kohana_OAuth)
RFC3986 compatible version of urlencode. Passing an array will encode all of the values in the array. Array keys will not be encoded.
$input = OAuth::urlencode($input);
Multi-dimensional arrays are not allowed!
This method implements OAuth 1.0 Spec 5.1.
Parameters
-
mixed$input required - Input string or array
Return Values
mixed
Source Code
public static function urlencode($input)
{
if (is_array($input))
{
// Encode the values of the array
return array_map(array('OAuth', 'urlencode'), $input);
}
// Encode the input
$input = rawurlencode($input);
if (version_compare(PHP_VERSION, '<', '5.3'))
{
// rawurlencode() is RFC3986 compliant in PHP 5.3
// the only difference is the encoding of tilde
$input = str_replace('%7E', '~', $input);
}
return $input;
}