public function validateResponse(ZboziApiResponse $response) { if (preg_match('~^2~', $response->getStatusCode())) { return; } $responseBody = $response->getBody(); if (preg_match('~^4~', $response->getStatusCode())) { if (!isset($responseBody['status'])) { throw new \SlevomatZboziApi\Response\ResponseErrorException(sprintf('Slevomat API invalid %s response: missing status.', $response->getStatusCode())); } if (!isset($responseBody['messages'])) { throw new \SlevomatZboziApi\Response\ResponseErrorException(sprintf('Slevomat API invalid %s response: missing messages.', $response->getStatusCode())); } switch ($responseBody['status']) { case InvalidRequestType::BAD_REQUEST: throw new \SlevomatZboziApi\Request\BadRequestException($responseBody['messages']); case InvalidRequestType::INVALID_CREDENTIALS: throw new \SlevomatZboziApi\Request\InvalidCredentialsException($responseBody['messages']); case InvalidRequestType::ORDER_NOT_FOUND: throw new \SlevomatZboziApi\Request\OrderNotFoundException($responseBody['messages']); case InvalidRequestType::ORDER_ITEM_NOT_FOUND: throw new \SlevomatZboziApi\Request\OrderItemNotFoundException($responseBody['messages']); case InvalidRequestType::INVALID_STATUS_CHANGE: throw new \SlevomatZboziApi\Request\InvalidStatusChangeException($responseBody['messages']); case InvalidRequestType::INVALID_CANCEL: throw new \SlevomatZboziApi\Request\InvalidCancelException($responseBody['messages']); case InvalidRequestType::OTHER_ERROR: throw new \SlevomatZboziApi\Request\OtherRequestErrorException($responseBody['messages']); case InvalidRequestType::ORDER_NOT_EXPORTED: throw new \SlevomatZboziApi\Request\OrderNotExportedException($responseBody['messages']); default: throw new \SlevomatZboziApi\Response\ResponseErrorException(sprintf('Slevomat API %s response contains unknown status %s.', $response->getStatusCode(), $responseBody['status'])); } } throw new \SlevomatZboziApi\Response\ResponseErrorException(sprintf('Slevomat API responded with unexpected HTTP status code: %s.', $response->getStatusCode())); }
public function log(\SlevomatZboziApi\Request\ZboziApiRequest $request, \SlevomatZboziApi\Response\ZboziApiResponse $response = null) { $responseData = $response === null ? '-' : sprintf('%s %s', $response->getStatusCode(), $response->getBody() === null ? '' : json_encode($response->getBody())); echo sprintf('<br><b>HTTP request</b>: %s %s | (%s:%s) | %s<br><br><b>HTTP response</b>: %s<br>', $request->getMethod(), $request->getUrl(), $request->getHeader(\SlevomatZboziApi\Request\RequestMaker::HEADER_PARTNER_TOKEN), $request->getHeader(\SlevomatZboziApi\Request\RequestMaker::HEADER_API_SECRET), $request->getBody() === null ? '-' : json_encode($request->getBody()), $responseData); }