/** * @param Response $response * * @throws Exception\ClientException * * @return mixed */ protected function decodeBody(Response $response) { if ($response->isServerError()) { throw new Exception\ClientException(sprintf("'%s' provider encountered a '%s' error while querying '%s'", $this->getIdentifier(), $response->getReasonPhrase(), $this->uri)); } $body = Json::decode($response->getBody()); if ($response->isClientError()) { throw new Exception\ClientException($body->error->message, $response->getStatusCode()); } return $body; }
/** * Checks ReST response for errors. * * @param Response $response the ReST response * @return void * @throws Exception\RuntimeException * @access protected */ protected static function checkResponse(HttpResponse $response) { if ($response->isServerError() || $response->isClientError()) { throw new Exception\RuntimeException(sprintf('Invalid response status code (HTTP/%s %s %s)', $response->getVersion(), $response->getStatus(), $response->getMessage())); } }
/** * Prepare a solarium response from the given request and client * response * * @throws HttpException * @param Request $request * @param \Zend\Http\Response $response * @return Response */ protected function prepareResponse($request, $response) { if ($response->isClientError()) { throw new HttpException($response->getReasonPhrase(), $response->getStatusCode()); } if ($request->getMethod() == Request::METHOD_HEAD) { $data = ''; } else { $data = $response->getBody(); } // this is used because in ZF2 status line isn't in the headers anymore $headers = array($response->renderStatusLine()); return new Response($data, $headers); }
/** * @param HttpResponse $response * @throws Exception\RuntimeException * @return array */ private function parseResponse(HttpResponse $response) { $result = json_decode($response->getBody(), true); if ($response->isSuccess()) { return $result; } // There is a 4xx error if ($response->isClientError()) { if (isset($result['errors']) && is_array($result['errors'])) { $message = implode(', ', $result['errors']); } elseif (isset($result['error'])) { $message = $result['error']; } else { $message = 'Unknown error'; } throw new Exception\RuntimeException(sprintf('An error occured on SendGrid (http code %s), message: %s', $response->getStatusCode(), $message)); } // There is a 5xx error throw new Exception\RuntimeException('SendGrid server error, please try again'); }
private function handleException(Response $resp) { // TODO: test coverage if ($resp->isClientError()) { if ($resp->getStatusCode() === 403) { throw new AuthenticationException($this->apiKey, $this->apiSecret, null); } else { throw new DomainException('The OpenTok API request failed: ' . $resp->getReasonPhrase(), null); } } elseif ($resp->isServerError()) { throw new UnexpectedValueException('The OpenTok API server responded with an error: ' . $resp->getReasonPhrase(), null); } else { throw new Exception('An unexpected error occurred:' . $resp->getReasonPhrase()); } }