/**
  * Sends a request and returns a response
  *
  * @param CartRecover_Request $request
  * @return Cart_Recover_Response
  */
 public function sendRequest(CartRecover_Request $request)
 {
     if (!extension_loaded('curl')) {
         throw new CartRecover_Exception_RuntimeException("cURL extension not found.");
     }
     $ch = curl_init();
     $uri = $request->getUri() . '?' . http_build_query($request->getParams());
     curl_setopt($ch, CURLOPT_URL, $uri);
     curl_setopt($ch, CURLOPT_HTTPGET, 1);
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     curl_setopt($ch, CURLOPT_HEADER, 1);
     curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json'));
     $this->response = curl_exec($ch);
     $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
     $headers = substr($this->response, 0, $header_size);
     $body = substr($this->response, $header_size);
     $contenttype = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
     $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
     $status = $this->getStatusMessage($headers);
     curl_close($ch);
     if ($contenttype != 'application/json') {
         throw new CartRecover_Exception_UnexpectedValueException("Unknown response format.");
     }
     $body = json_decode($body, true);
     $response = new CartRecover_Response();
     $response->setRawResponse($this->response);
     $response->setBody($body);
     $response->setHeaders($this->http_parse_headers($headers));
     $response->setStatus($status, $code);
     return $response;
 }
 /**
  * Sends a request and returns a response
  *
  * @param CartRecover_Request $request
  * @return Cart_Recover_Response
  */
 public function sendRequest(CartRecover_Request $request)
 {
     $url = Guzzle\Http\Url::factory($request->getUri());
     $url->setQuery($request->getParams());
     $this->client->setBaseUrl($url);
     $grequest = $this->client->createRequest($request->getMethod(), $url);
     $grequest->addHeader('Accept', 'application/json');
     $this->response = $this->client->send($grequest);
     if (!$this->response->isContentType('application/json')) {
         throw new CartRecover_Exception_UnexpectedValueException("Unknown response format.");
     }
     $response = new CartRecover_Response();
     $response->setRawResponse($this->response->__toString());
     $response->setBody($this->response->json());
     $response->setHeaders($this->response->getHeaders()->toArray());
     $response->setStatus($this->response->getReasonPhrase(), $this->response->getStatusCode());
     return $response;
 }
 /**
  * Sends a request and returns a response
  *
  * @param CartRecover_Request $request
  * @return Cart_Recover_Response
  */
 public function sendRequest(CartRecover_Request $request)
 {
     $this->client->setUri($request->getUri());
     $this->client->setParameterGet($request->getParams());
     $this->client->setMethod($request->getMethod());
     $this->client->setHeaders('Accept', 'application/json');
     $this->response = $this->client->request();
     if ($this->response->getHeader('Content-Type') != 'application/json') {
         throw new CartRecover_Exception_UnexpectedValueException("Unknown response format.");
     }
     $body = json_decode($this->response->getBody(), true);
     $response = new CartRecover_Response();
     $response->setRawResponse($this->response->asString());
     $response->setBody($body);
     $response->setHeaders($this->response->getHeaders());
     $response->setStatus($this->response->getMessage(), $this->response->getStatus());
     return $response;
 }
 /**
  * Builds the Request object
  * @param type $path
  * @param array $params
  * @return \CartRecover_Request
  */
 protected function buildRequest($path, array $params = array())
 {
     $uri = $this->url . $path;
     $params['account_key'] = $this->_account_key;
     $request = new CartRecover_Request();
     $request->setUri($uri);
     $request->setMethod('GET');
     $request->setParams($params);
     return $request;
 }