/** * 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; }