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