/** * @param Event $event * @throws ApiLimitExceedException * @throws NotFoundException * @throws RuntimeException */ public function onRequestError(Event $event) { /** @var $request \Guzzle\Http\Message\Request */ $request = $event['request']; $response = $request->getResponse(); if ($response->isClientError() || $response->isServerError()) { if (403 === $response->getStatusCode()) { $limit = (int) $response->getHeader('X-Rate-Limit-Limit'); $remaining = (int) $response->getHeader('X-Rate-Limit-Remaining'); $reset = (int) $response->getHeader('X-Rate-Limit-Reset'); if ($limit === 0) { throw new ApiLimitExceedException("X-Rate-Limit-Limit retched : 600 requests authorized", 403); } elseif ($remaining === 0) { throw new ApiLimitExceedException("X-Rate-Limit-Remaining retched : 10 requests per second authorized. You need to wait {$reset} seconds", 403); } } if (404 === $response->getStatusCode() && $response->getHeader('reasonCode')) { throw new NotFoundException($response->getHeader('reasonCode'), 404); } $content = ResponseMediator::getContent($response); throw new RuntimeException(isset($content['message']) ? $content['message'] : $content, $response->getStatusCode()); } }
/** * Send a DELETE request with JSON-encoded parameters. * * @param string $path Request path. * @param array $parameters POST parameters to be JSON encoded. * @param array $requestHeaders Request headers. */ protected function delete($path, array $parameters = array(), $requestHeaders = array()) { $response = $this->client->getHttpClient()->delete($path, $this->createJsonBody($parameters), $requestHeaders); return ResponseMediator::getContent($response); }