/** * Get the canonicalized query/parameter string for a request * * @param RequestInterface $request Request used to build canonicalized string * * @return string */ private function getCanonicalizedParameterString(RequestInterface $request) { if ($request->getMethod() == 'POST') { $params = $request->getPostFields()->toArray(); } else { $params = $request->getQuery()->toArray(); } // Don't resign a previous signature value unset($params['Signature']); uksort($params, 'strcmp'); $str = ''; foreach ($params as $key => $val) { $str .= rawurlencode($key) . '=' . rawurlencode($val) . '&'; } return substr($str, 0, -1); }
/** * Get all of the parameters required to sign a request including: * * The oauth params * * The request GET params * * The params passed in the POST body (with a content-type of application/x-www-form-urlencoded) * * @param RequestInterface $request Request to generate a signature for * @param integer $timestamp Timestamp to use for nonce * @param string $nonce * * @return array */ public function getParamsToSign(RequestInterface $request, $timestamp, $nonce) { $params = $this->getOauthParams($timestamp, $nonce); // Add query string parameters $params->merge($request->getQuery()); // Add POST fields to signing string if required if ($this->shouldPostFieldsBeSigned($request)) { $params->merge($request->getPostFields()); } // Sort params $params = $params->toArray(); uksort($params, 'strcmp'); return $params; }
private function moveHeadersToQuery(RequestInterface $request) { $query = $request->getQuery(); foreach ($request->getHeaders() as $name => $header) { if (substr($name, 0, 5) == 'x-amz') { $query[$header->getName()] = (string) $header; } if ($name !== 'host') { $request->removeHeader($name); } } }
public function visit(CommandInterface $command, RequestInterface $request, Parameter $param, $value) { $request->getQuery()->set($param->getWireName(), $this->prepareValue($value, $param)); }
protected function visit_query(RequestInterface $request, $value, $flags) { if (!is_array($value)) { throw new InvalidArgumentException('query value must be an array'); } if ($flags & self::OPTIONS_AS_DEFAULTS) { // Merge query string values in but do not overwrite existing values $query = $request->getQuery(); $query->overwriteWith(array_diff_key($value, $query->toArray())); } else { $request->getQuery()->overwriteWith($value); } }