Esempio n. 1
0
 /**
  * Signs the Request so it can be dispatched.
  *
  * @param  Request $request The Request to Sign
  * @return $this
  */
 public function signRequest(Request $request)
 {
     if ($request->isSigned()) {
         return $this;
     }
     $query = $request->getQuery();
     $query['auth_key'] = $this->credentials->getAuthKey();
     $query['auth_timestamp'] = time();
     $query['auth_version'] = '1.0';
     if (!is_null($request->getBody())) {
         $query['body_md5'] = md5($request->getBody());
     }
     ksort($query);
     $queryString = urldecode(http_build_query(array_change_key_case($query, CASE_LOWER)));
     $stringToSign = $request->getMethod() . "\n" . $request->getUri() . "\n" . $queryString;
     $query['auth_signature'] = hash_hmac('sha256', $stringToSign, $this->credentials->getAuthSecret());
     $request->setQuery($query);
     $request->setSigned(true);
     return $this;
 }
Esempio n. 2
0
 /**
  * Setup the Curl Options.
  *
  * @param  Request $request The Request
  */
 protected function setupCurl(Request $request)
 {
     curl_setopt_array($this->handle, [CURLOPT_URL => $this->fullUrl($request->getUri() . '?' . $request->getQuery(true)), CURLOPT_TIMEOUT => $this->options['timeout'], CURLOPT_CONNECTTIMEOUT => $this->options['connect_timeout'], CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ['Content-Type: application/json']]);
     switch ($request->getMethod()) {
         case 'GET':
             curl_setopt($this->handle, CURLOPT_HTTPGET, true);
             curl_setopt($this->handle, CURLOPT_POST, false);
             break;
         case 'POST':
             curl_setopt($this->handle, CURLOPT_HTTPGET, false);
             curl_setopt($this->handle, CURLOPT_POST, true);
             curl_setopt($this->handle, CURLOPT_POSTFIELDS, $request->getBody());
             break;
     }
 }