From fe292239cfb20dab617270853af0e39cb69093ba Mon Sep 17 00:00:00 2001 From: Miguel Vela Romera Date: Thu, 19 Nov 2020 17:05:09 +0100 Subject: [PATCH] release v6.0.0 --- composer.json | 8 +++--- phpcs.xml | 2 +- src/Infrastructure/ApiConnection.php | 38 ++++++++++++++++++---------- 3 files changed, 30 insertions(+), 18 deletions(-) diff --git a/composer.json b/composer.json index a1d5007..b9b5342 100644 --- a/composer.json +++ b/composer.json @@ -2,10 +2,10 @@ "name": "payvision/payvision-sdk-php", "description": "Payvision PHP SDK", "type": "library", - "version": "5.1.2", + "version": "6.0.0", "license": "MIT", "require": { - "php": "^7.2.5|^7.3", + "php": "~7.1.3||~7.2.5||~7.3.0||~7.4.0", "ext-simplexml": "*", "ext-json": "*", "ext-curl": "*", @@ -23,9 +23,9 @@ } }, "require-dev": { - "phpunit/phpunit": "^8.5", + "phpunit/phpunit": "^7.5", "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "object-calisthenics/phpcs-calisthenics-rules": "^3.8", + "object-calisthenics/phpcs-calisthenics-rules": "^3.0", "phpcompatibility/php-compatibility": "^9.3", "slevomat/coding-standard": "^6.3", "squizlabs/php_codesniffer": "^3.5" diff --git a/phpcs.xml b/phpcs.xml index ad8aa04..2f2e0a4 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -30,7 +30,7 @@ - + diff --git a/src/Infrastructure/ApiConnection.php b/src/Infrastructure/ApiConnection.php index e041ce1..a56d53d 100644 --- a/src/Infrastructure/ApiConnection.php +++ b/src/Infrastructure/ApiConnection.php @@ -17,6 +17,7 @@ use Payvision\SDK\Exception\Api\ErrorResponse; use Payvision\SDK\Exception\ApiException; use Payvision\SDK\Exception\BuilderException; +use Psr\Http\Message\ResponseInterface; use ReflectionException; class ApiConnection implements Connection @@ -107,6 +108,7 @@ public function executeAndReturnArray(Request $request): array * @param RequestHeaderCollection $requestHeaderCollection * @return array * @throws ApiException + * @throws ErrorResponse */ private function get(Request $request, RequestHeaderCollection $requestHeaderCollection): array { @@ -116,19 +118,7 @@ private function get(Request $request, RequestHeaderCollection $requestHeaderCol ); $this->lastJsonRequest = $request->getPathParams(); - $this->lastStatusCode = $guzzleResponse->getStatusCode(); - $contents = $guzzleResponse->getBody()->getContents(); - $json = \json_decode($contents, true); - - if (!\is_array($json)) { - $this->logDebugData($this->lastJsonRequest, ['_raw_response' => $contents], $requestHeaderCollection); - throw new ApiException( - \sprintf('Response is not JSON: %1$s', $contents), - ApiException::INVALID_RESPONSE - ); - } - - return $json; + return $this->parseJSONResponse($guzzleResponse, $requestHeaderCollection); } /** @@ -136,6 +126,7 @@ private function get(Request $request, RequestHeaderCollection $requestHeaderCol * @param RequestHeaderCollection $requestHeaderCollection * @return array * @throws ApiException + * @throws ErrorResponse */ private function post(Request $request, RequestHeaderCollection $requestHeaderCollection): array { @@ -147,12 +138,32 @@ private function post(Request $request, RequestHeaderCollection $requestHeaderCo ); $this->lastJsonRequest = $jsonRequest; + return $this->parseJSONResponse($guzzleResponse, $requestHeaderCollection); + } + + /** + * @throws ApiException + * @throws ErrorResponse + */ + private function parseJSONResponse( + ResponseInterface $guzzleResponse, + RequestHeaderCollection $requestHeaderCollection + ): array { $this->lastStatusCode = $guzzleResponse->getStatusCode(); $contents = $guzzleResponse->getBody()->getContents(); $json = \json_decode($contents, true); if (!\is_array($json)) { $this->logDebugData($this->lastJsonRequest, ['_raw_response' => $contents], $requestHeaderCollection); + + if ($this->lastStatusCode >= 400) { + throw new ErrorResponse( + $guzzleResponse, + 'Invalid response code received', + ErrorResponse::INVALID_RESPONSE + ); + } + throw new ApiException( \sprintf('Response is not JSON: %1$s', $contents), ApiException::INVALID_RESPONSE @@ -250,6 +261,7 @@ private function handleResponse( * @param Request $request * @param array $requestHeaders * @return array + * @throws ErrorResponse * @throws ApiException */ private function doRequest(Request $request, array $requestHeaders = []): array