16 if (is_array($input)) {
17 return array_map(array(
'IMSGlobal\LTI\OAuth\OAuthUtil',
'urlencode_rfc3986'), $input);
18 }
else if (is_scalar($input)) {
19 return str_replace(
'+',
' ', str_replace(
'%7E',
'~', rawurlencode($input)));
29 return urldecode($string);
37 public static function split_header($header, $only_allow_oauth_parameters =
true) {
40 if (preg_match_all(
'/('.($only_allow_oauth_parameters ?
'oauth_' :
'').
'[a-z_-]*)=(:?"([^"]*)"|([^,]*))/', $header, $matches)) {
41 foreach ($matches[1] as $i => $h) {
44 if (isset($params[
'realm'])) {
45 unset($params[
'realm']);
56 if (function_exists(
'apache_request_headers')) {
59 $headers = apache_request_headers();
66 foreach ($headers AS $key => $value) {
67 $key = str_replace(
" ",
"-", ucwords(strtolower(str_replace(
"-",
" ", $key))));
74 if( isset($_SERVER[
'CONTENT_TYPE']) )
75 $out[
'Content-Type'] = $_SERVER[
'CONTENT_TYPE'];
76 if( isset($_ENV[
'CONTENT_TYPE']) )
77 $out[
'Content-Type'] = $_ENV[
'CONTENT_TYPE'];
79 foreach ($_SERVER as $key => $value) {
80 if (substr($key, 0, 5) ==
'HTTP_') {
84 $key = str_replace(
' ',
'-', ucwords(strtolower(str_replace(
'_',
' ', substr($key, 5)))));
97 if (!isset($input) || !$input)
return array();
99 $pairs = explode(
'&', $input);
101 $parsed_parameters = array();
102 foreach ($pairs as $pair) {
103 $split = explode(
'=', $pair, 2);
104 $parameter = self::urldecode_rfc3986($split[0]);
105 $value = isset($split[1]) ? self::urldecode_rfc3986($split[1]) :
'';
107 if (isset($parsed_parameters[$parameter])) {
111 if (is_scalar($parsed_parameters[$parameter])) {
114 $parsed_parameters[$parameter] = array($parsed_parameters[$parameter]);
117 $parsed_parameters[$parameter][] = $value;
119 $parsed_parameters[$parameter] = $value;
123 return $parsed_parameters;
129 if (!$params)
return '';
134 $params = array_combine($keys, $values);
138 uksort($params,
'strcmp');
141 foreach ($params as $parameter => $value) {
142 if (is_array($value)) {
146 sort($value, SORT_STRING);
147 foreach ($value as $duplicate_value) {
148 $pairs[] = $parameter .
'=' . $duplicate_value;
151 $pairs[] = $parameter .
'=' . $value;
157 return implode(
'&', $pairs);
static urldecode_rfc3986($string)
static urlencode_rfc3986($input)
static split_header($header, $only_allow_oauth_parameters=true)
static build_http_query($params)
Class to provide OAuth utility methods.
static parse_parameters($input)