Beispiel #1
0
 /**
  * Sorts and normalizes request data and oauthValues
  *
  * Section 9.1.1 of Oauth spec.
  *
  * - URL encode keys + values.
  * - Sort keys & values by byte value.
  *
  * @param \Cake\Http\Client\Request $request The request object.
  * @param array $oauthValues Oauth values.
  * @return string sorted and normalized values
  */
 protected function _normalizedParams($request, $oauthValues)
 {
     $query = parse_url($request->url(), PHP_URL_QUERY);
     parse_str($query, $queryArgs);
     $post = [];
     $body = $request->body();
     if (is_string($body) && $request->getHeaderLine('content-type') === 'application/x-www-form-urlencoded') {
         parse_str($body, $post);
     }
     if (is_array($body)) {
         $post = $body;
     }
     $args = array_merge($queryArgs, $oauthValues, $post);
     uksort($args, 'strcmp');
     $pairs = [];
     foreach ($args as $k => $val) {
         if (is_array($val)) {
             sort($val, SORT_STRING);
             foreach ($val as $nestedVal) {
                 $pairs[] = "{$k}={$nestedVal}";
             }
         } else {
             $pairs[] = "{$k}={$val}";
         }
     }
     return implode('&', $pairs);
 }