From 0f4fe2bf9c8270e1292152944f4c1cbfaebbff1f Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Sun, 26 Mar 2017 10:16:36 +0200 Subject: [PATCH] Improving safe hydrate (#307) * Improving safe deseriliaze * Fixes * Use switch statement * cs * bugfix * Update method name * Update return docs --- src/Mailgun/Api/Domain.php | 22 ++--- src/Mailgun/Api/Event.php | 2 +- src/Mailgun/Api/HttpApi.php | 80 ++++++++++++------- src/Mailgun/Api/Message.php | 4 +- src/Mailgun/Api/Pagination.php | 4 +- src/Mailgun/Api/Routes.php | 10 +-- src/Mailgun/Api/Stats.php | 4 +- src/Mailgun/Api/Suppression/Bounce.php | 10 +-- src/Mailgun/Api/Suppression/Complaint.php | 10 +-- src/Mailgun/Api/Suppression/Unsubscribe.php | 10 +-- src/Mailgun/Api/Tag.php | 10 +-- src/Mailgun/Api/Webhook.php | 10 +-- .../Exception/DeserializeException.php | 2 +- src/Mailgun/Exception/HttpClientException.php | 43 +++++++--- src/Mailgun/Exception/HttpServerException.php | 2 +- .../Exception/InvalidArgumentException.php | 2 +- .../Exception/UnknownErrorException.php | 19 +++++ src/Mailgun/Hydrator/ArrayHydrator.php | 2 +- src/Mailgun/Hydrator/Hydrator.php | 2 +- src/Mailgun/Hydrator/ModelHydrator.php | 2 +- src/Mailgun/Hydrator/NoopHydrator.php | 2 +- tests/Api/TestCase.php | 2 +- 22 files changed, 159 insertions(+), 95 deletions(-) create mode 100644 src/Mailgun/Exception/UnknownErrorException.php diff --git a/src/Mailgun/Api/Domain.php b/src/Mailgun/Api/Domain.php index 77e7cc1..5f208c9 100644 --- a/src/Mailgun/Api/Domain.php +++ b/src/Mailgun/Api/Domain.php @@ -49,7 +49,7 @@ class Domain extends HttpApi $response = $this->httpGet('/v3/domains', $params); - return $this->safeHydrate($response, IndexResponse::class); + return $this->hydrateResponse($response, IndexResponse::class); } /** @@ -65,7 +65,7 @@ class Domain extends HttpApi $response = $this->httpGet(sprintf('/v3/domains/%s', $domain)); - return $this->safeHydrate($response, ShowResponse::class); + return $this->hydrateResponse($response, ShowResponse::class); } /** @@ -97,7 +97,7 @@ class Domain extends HttpApi $response = $this->httpPost('/v3/domains', $params); - return $this->safeHydrate($response, CreateResponse::class); + return $this->hydrateResponse($response, CreateResponse::class); } /** @@ -114,7 +114,7 @@ class Domain extends HttpApi $response = $this->httpDelete(sprintf('/v3/domains/%s', $domain)); - return $this->safeHydrate($response, DeleteResponse::class); + return $this->hydrateResponse($response, DeleteResponse::class); } /** @@ -139,7 +139,7 @@ class Domain extends HttpApi $response = $this->httpGet(sprintf('/v3/domains/%s/credentials', $domain), $params); - return $this->safeHydrate($response, CredentialResponse::class); + return $this->hydrateResponse($response, CredentialResponse::class); } /** @@ -165,7 +165,7 @@ class Domain extends HttpApi $response = $this->httpPost(sprintf('/v3/domains/%s/credentials', $domain), $params); - return $this->safeHydrate($response, CreateCredentialResponse::class); + return $this->hydrateResponse($response, CreateCredentialResponse::class); } /** @@ -190,7 +190,7 @@ class Domain extends HttpApi $response = $this->httpPut(sprintf('/v3/domains/%s/credentials/%s', $domain, $login), $params); - return $this->safeHydrate($response, UpdateCredentialResponse::class); + return $this->hydrateResponse($response, UpdateCredentialResponse::class); } /** @@ -214,7 +214,7 @@ class Domain extends HttpApi ) ); - return $this->safeHydrate($response, DeleteCredentialResponse::class); + return $this->hydrateResponse($response, DeleteCredentialResponse::class); } /** @@ -222,7 +222,7 @@ class Domain extends HttpApi * * @param string $domain Name of the domain. * - * @return ConnectionResponse|array|ResponseInterface + * @return ConnectionResponse|ResponseInterface */ public function connection($domain) { @@ -230,7 +230,7 @@ class Domain extends HttpApi $response = $this->httpGet(sprintf('/v3/domains/%s/connection', $domain)); - return $this->safeHydrate($response, ConnectionResponse::class); + return $this->hydrateResponse($response, ConnectionResponse::class); } /** @@ -261,6 +261,6 @@ class Domain extends HttpApi $response = $this->httpPut(sprintf('/v3/domains/%s/connection', $domain), $params); - return $this->safeHydrate($response, UpdateConnectionResponse::class); + return $this->hydrateResponse($response, UpdateConnectionResponse::class); } } diff --git a/src/Mailgun/Api/Event.php b/src/Mailgun/Api/Event.php index 6014fc9..115562a 100644 --- a/src/Mailgun/Api/Event.php +++ b/src/Mailgun/Api/Event.php @@ -33,7 +33,7 @@ class Event extends HttpApi $response = $this->httpGet(sprintf('/v3/%s/events', $domain), $params); - return $this->safeHydrate($response, EventResponse::class); + return $this->hydrateResponse($response, EventResponse::class); } /** diff --git a/src/Mailgun/Api/HttpApi.php b/src/Mailgun/Api/HttpApi.php index bf58cb5..467689c 100644 --- a/src/Mailgun/Api/HttpApi.php +++ b/src/Mailgun/Api/HttpApi.php @@ -11,12 +11,12 @@ namespace Mailgun\Api; use Http\Client\Exception as HttplugException; use Http\Client\HttpClient; +use Mailgun\Exception\UnknownErrorException; use Mailgun\Hydrator\Hydrator; use Mailgun\Hydrator\NoopHydrator; use Mailgun\Exception\HttpClientException; use Mailgun\Exception\HttpServerException; use Mailgun\RequestBuilder; -use Mailgun\Model\ErrorResponse; use Psr\Http\Message\ResponseInterface; /** @@ -56,38 +56,58 @@ abstract class HttpApi } /** - * Attempts to safely deserialize the response into the given class. - * If the HTTP return code != 200, deserializes into SimpleResponse::class - * to contain the error message and any other information provided. - * * @param ResponseInterface $response - * @param string $className + * @param string $class * - * @throws HttpClientException + * @return mixed|ResponseInterface * - * @return object $class + * @throws \Exception */ - protected function safeHydrate(ResponseInterface $response, $className) + protected function hydrateResponse(ResponseInterface $response, $class) { if (!$this->hydrator) { return $response; } - if ($response->getStatusCode() === 200) { - return $this->hydrator->deserialize($response, $className); - } elseif ($response->getStatusCode() === 401) { - throw HttpClientException::unauthorized(); - } else { - return $this->hydrator->deserialize($response, ErrorResponse::class); + if ($response->getStatusCode() !== 200 && $response->getStatusCode() !== 201) { + $this->handleErrors($response); + } + + return $this->hydrator->hydrate($response, $class); + } + + /** + * Throw the correct exception for this error. + * + * @param ResponseInterface $response + * + * @throws \Exception + */ + protected function handleErrors(ResponseInterface $response) + { + $statusCode = $response->getStatusCode(); + switch ($statusCode) { + case 400: + throw HttpClientException::badRequest($response); + case 401: + throw HttpClientException::unauthorized($response); + case 402: + throw HttpClientException::requestFailed($response); + case 404: + throw HttpClientException::notFound($response); + case 500 <= $statusCode: + throw HttpServerException::serverError($statusCode); + default: + throw new UnknownErrorException(); } } /** * Send a GET request with query parameters. * - * @param string $path Request path. - * @param array $parameters GET parameters. - * @param array $requestHeaders Request Headers. + * @param string $path Request path + * @param array $parameters GET parameters + * @param array $requestHeaders Request Headers * * @return ResponseInterface */ @@ -111,9 +131,9 @@ abstract class HttpApi /** * Send a POST request with JSON-encoded parameters. * - * @param string $path Request path. - * @param array $parameters POST parameters to be JSON encoded. - * @param array $requestHeaders Request headers. + * @param string $path Request path + * @param array $parameters POST parameters to be JSON encoded + * @param array $requestHeaders Request headers * * @return ResponseInterface */ @@ -125,9 +145,9 @@ abstract class HttpApi /** * Send a POST request with raw data. * - * @param string $path Request path. - * @param array|string $body Request body. - * @param array $requestHeaders Request headers. + * @param string $path Request path + * @param array|string $body Request body + * @param array $requestHeaders Request headers * * @return ResponseInterface */ @@ -147,9 +167,9 @@ abstract class HttpApi /** * Send a PUT request with JSON-encoded parameters. * - * @param string $path Request path. - * @param array $parameters POST parameters to be JSON encoded. - * @param array $requestHeaders Request headers. + * @param string $path Request path + * @param array $parameters POST parameters to be JSON encoded + * @param array $requestHeaders Request headers * * @return ResponseInterface */ @@ -169,9 +189,9 @@ abstract class HttpApi /** * 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. + * @param string $path Request path + * @param array $parameters POST parameters to be JSON encoded + * @param array $requestHeaders Request headers * * @return ResponseInterface */ diff --git a/src/Mailgun/Api/Message.php b/src/Mailgun/Api/Message.php index 4508190..3811276 100644 --- a/src/Mailgun/Api/Message.php +++ b/src/Mailgun/Api/Message.php @@ -68,7 +68,7 @@ class Message extends HttpApi $response = $this->httpPostRaw(sprintf('/v3/%s/messages', $domain), $postDataMultipart); - return $this->safeHydrate($response, SendResponse::class); + return $this->hydrateResponse($response, SendResponse::class); } /** @@ -90,7 +90,7 @@ class Message extends HttpApi $response = $this->httpGet($url, [], $headers); - return $this->safeHydrate($response, ShowResponse::class); + return $this->hydrateResponse($response, ShowResponse::class); } /** diff --git a/src/Mailgun/Api/Pagination.php b/src/Mailgun/Api/Pagination.php index d881a6c..335a8b0 100644 --- a/src/Mailgun/Api/Pagination.php +++ b/src/Mailgun/Api/Pagination.php @@ -20,7 +20,7 @@ trait Pagination { abstract protected function httpGet($path, array $parameters = [], array $requestHeaders = []); - abstract protected function safeHydrate(ResponseInterface $response, $className); + abstract protected function hydrateResponse(ResponseInterface $response, $className); /** * @param PagingProvider $response @@ -78,6 +78,6 @@ trait Pagination $response = $this->httpGet($url); - return $this->safeHydrate($response, $class); + return $this->hydrateResponse($response, $class); } } diff --git a/src/Mailgun/Api/Routes.php b/src/Mailgun/Api/Routes.php index 289f5ab..d0e6591 100644 --- a/src/Mailgun/Api/Routes.php +++ b/src/Mailgun/Api/Routes.php @@ -45,7 +45,7 @@ class Routes extends HttpApi $response = $this->httpGet('/v3/routes', $params); - return $this->safeHydrate($response, IndexResponse::class); + return $this->hydrateResponse($response, IndexResponse::class); } /** @@ -61,7 +61,7 @@ class Routes extends HttpApi $response = $this->httpGet(sprintf('/v3/routes/%s', $routeId)); - return $this->safeHydrate($response, ShowResponse::class); + return $this->hydrateResponse($response, ShowResponse::class); } /** @@ -90,7 +90,7 @@ class Routes extends HttpApi $response = $this->httpPost('/v3/routes', $params); - return $this->safeHydrate($response, CreateResponse::class); + return $this->hydrateResponse($response, CreateResponse::class); } /** @@ -136,7 +136,7 @@ class Routes extends HttpApi $response = $this->httpPut(sprintf('/v3/routes/%s', $routeId), $params); - return $this->safeHydrate($response, UpdateResponse::class); + return $this->hydrateResponse($response, UpdateResponse::class); } /** @@ -152,6 +152,6 @@ class Routes extends HttpApi $response = $this->httpDelete(sprintf('/v3/routes/%s', $routeId)); - return $this->safeHydrate($response, DeleteResponse::class); + return $this->hydrateResponse($response, DeleteResponse::class); } } diff --git a/src/Mailgun/Api/Stats.php b/src/Mailgun/Api/Stats.php index 9b9d6b8..cd7b947 100644 --- a/src/Mailgun/Api/Stats.php +++ b/src/Mailgun/Api/Stats.php @@ -32,7 +32,7 @@ class Stats extends HttpApi $response = $this->httpGet(sprintf('/v3/%s/stats/total', rawurlencode($domain)), $params); - return $this->safeHydrate($response, TotalResponse::class); + return $this->hydrateResponse($response, TotalResponse::class); } /** @@ -47,6 +47,6 @@ class Stats extends HttpApi $response = $this->httpGet(sprintf('/v3/%s/stats', rawurlencode($domain)), $params); - return $this->safeHydrate($response, AllResponse::class); + return $this->hydrateResponse($response, AllResponse::class); } } diff --git a/src/Mailgun/Api/Suppression/Bounce.php b/src/Mailgun/Api/Suppression/Bounce.php index 4055bee..6b957fd 100644 --- a/src/Mailgun/Api/Suppression/Bounce.php +++ b/src/Mailgun/Api/Suppression/Bounce.php @@ -43,7 +43,7 @@ class Bounce extends HttpApi $response = $this->httpGet(sprintf('/v3/%s/bounces', $domain), $params); - return $this->safeHydrate($response, IndexResponse::class); + return $this->hydrateResponse($response, IndexResponse::class); } /** @@ -59,7 +59,7 @@ class Bounce extends HttpApi $response = $this->httpGet(sprintf('/v3/%s/bounces/%s', $domain, $address)); - return $this->safeHydrate($response, ShowResponse::class); + return $this->hydrateResponse($response, ShowResponse::class); } /** @@ -78,7 +78,7 @@ class Bounce extends HttpApi $response = $this->httpPost(sprintf('/v3/%s/bounces', $domain), $params); - return $this->safeHydrate($response, CreateResponse::class); + return $this->hydrateResponse($response, CreateResponse::class); } /** @@ -94,7 +94,7 @@ class Bounce extends HttpApi $response = $this->httpDelete(sprintf('/v3/%s/bounces/%s', $domain, $address)); - return $this->safeHydrate($response, DeleteResponse::class); + return $this->hydrateResponse($response, DeleteResponse::class); } /** @@ -108,6 +108,6 @@ class Bounce extends HttpApi $response = $this->httpDelete(sprintf('/v3/%s/bounces', $domain)); - return $this->safeHydrate($response, DeleteResponse::class); + return $this->hydrateResponse($response, DeleteResponse::class); } } diff --git a/src/Mailgun/Api/Suppression/Complaint.php b/src/Mailgun/Api/Suppression/Complaint.php index 9475913..93c7ab3 100644 --- a/src/Mailgun/Api/Suppression/Complaint.php +++ b/src/Mailgun/Api/Suppression/Complaint.php @@ -43,7 +43,7 @@ class Complaint extends HttpApi $response = $this->httpGet(sprintf('/v3/%s/complaints', $domain), $params); - return $this->safeHydrate($response, IndexResponse::class); + return $this->hydrateResponse($response, IndexResponse::class); } /** @@ -58,7 +58,7 @@ class Complaint extends HttpApi Assert::stringNotEmpty($address); $response = $this->httpGet(sprintf('/v3/%s/complaints/%s', $domain, $address)); - return $this->safeHydrate($response, ShowResponse::class); + return $this->hydrateResponse($response, ShowResponse::class); } /** @@ -77,7 +77,7 @@ class Complaint extends HttpApi $response = $this->httpPost(sprintf('/v3/%s/complaints', $domain), $params); - return $this->safeHydrate($response, CreateResponse::class); + return $this->hydrateResponse($response, CreateResponse::class); } /** @@ -93,7 +93,7 @@ class Complaint extends HttpApi $response = $this->httpDelete(sprintf('/v3/%s/complaints/%s', $domain, $address)); - return $this->safeHydrate($response, DeleteResponse::class); + return $this->hydrateResponse($response, DeleteResponse::class); } /** @@ -107,6 +107,6 @@ class Complaint extends HttpApi $response = $this->httpDelete(sprintf('/v3/%s/complaints', $domain)); - return $this->safeHydrate($response, DeleteResponse::class); + return $this->hydrateResponse($response, DeleteResponse::class); } } diff --git a/src/Mailgun/Api/Suppression/Unsubscribe.php b/src/Mailgun/Api/Suppression/Unsubscribe.php index fde6c2f..3ed1c24 100644 --- a/src/Mailgun/Api/Suppression/Unsubscribe.php +++ b/src/Mailgun/Api/Suppression/Unsubscribe.php @@ -43,7 +43,7 @@ class Unsubscribe extends HttpApi $response = $this->httpGet(sprintf('/v3/%s/unsubscribes', $domain), $params); - return $this->safeHydrate($response, IndexResponse::class); + return $this->hydrateResponse($response, IndexResponse::class); } /** @@ -59,7 +59,7 @@ class Unsubscribe extends HttpApi $response = $this->httpGet(sprintf('/v3/%s/unsubscribes/%s', $domain, $address)); - return $this->safeHydrate($response, ShowResponse::class); + return $this->hydrateResponse($response, ShowResponse::class); } /** @@ -78,7 +78,7 @@ class Unsubscribe extends HttpApi $response = $this->httpPost(sprintf('/v3/%s/unsubscribes', $domain), $params); - return $this->safeHydrate($response, CreateResponse::class); + return $this->hydrateResponse($response, CreateResponse::class); } /** @@ -94,7 +94,7 @@ class Unsubscribe extends HttpApi $response = $this->httpDelete(sprintf('/v3/%s/unsubscribes/%s', $domain, $address)); - return $this->safeHydrate($response, DeleteResponse::class); + return $this->hydrateResponse($response, DeleteResponse::class); } /** @@ -108,6 +108,6 @@ class Unsubscribe extends HttpApi $response = $this->httpDelete(sprintf('/v3/%s/unsubscribes', $domain)); - return $this->safeHydrate($response, DeleteResponse::class); + return $this->hydrateResponse($response, DeleteResponse::class); } } diff --git a/src/Mailgun/Api/Tag.php b/src/Mailgun/Api/Tag.php index 65cedd0..625274e 100644 --- a/src/Mailgun/Api/Tag.php +++ b/src/Mailgun/Api/Tag.php @@ -43,7 +43,7 @@ class Tag extends HttpApi $response = $this->httpGet(sprintf('/v3/%s/tags', $domain), $params); - return $this->safeHydrate($response, IndexResponse::class); + return $this->hydrateResponse($response, IndexResponse::class); } /** @@ -61,7 +61,7 @@ class Tag extends HttpApi $response = $this->httpGet(sprintf('/v3/%s/tags/%s', $domain, $tag)); - return $this->safeHydrate($response, ShowResponse::class); + return $this->hydrateResponse($response, ShowResponse::class); } /** @@ -85,7 +85,7 @@ class Tag extends HttpApi $response = $this->httpPut(sprintf('/v3/%s/tags/%s', $domain, $tag), $params); - return $this->safeHydrate($response, UpdateResponse::class); + return $this->hydrateResponse($response, UpdateResponse::class); } /** @@ -105,7 +105,7 @@ class Tag extends HttpApi $response = $this->httpGet(sprintf('/v3/%s/tags/%s/stats', $domain, $tag), $params); - return $this->safeHydrate($response, StatisticsResponse::class); + return $this->hydrateResponse($response, StatisticsResponse::class); } /** @@ -123,6 +123,6 @@ class Tag extends HttpApi $response = $this->httpDelete(sprintf('/v3/%s/tags/%s', $domain, $tag)); - return $this->safeHydrate($response, DeleteResponse::class); + return $this->hydrateResponse($response, DeleteResponse::class); } } diff --git a/src/Mailgun/Api/Webhook.php b/src/Mailgun/Api/Webhook.php index c4256f7..5b262f2 100644 --- a/src/Mailgun/Api/Webhook.php +++ b/src/Mailgun/Api/Webhook.php @@ -31,7 +31,7 @@ class Webhook extends HttpApi Assert::notEmpty($domain); $response = $this->httpGet(sprintf('/v3/domains/%s/webhooks', $domain)); - return $this->safeHydrate($response, IndexResponse::class); + return $this->hydrateResponse($response, IndexResponse::class); } /** @@ -46,7 +46,7 @@ class Webhook extends HttpApi Assert::notEmpty($webhook); $response = $this->httpGet(sprintf('/v3/domains/%s/webhooks/%s', $domain, $webhook)); - return $this->safeHydrate($response, ShowResponse::class); + return $this->hydrateResponse($response, ShowResponse::class); } /** @@ -69,7 +69,7 @@ class Webhook extends HttpApi $response = $this->httpPost(sprintf('/v3/domains/%s/webhooks', $domain), $params); - return $this->safeHydrate($response, CreateResponse::class); + return $this->hydrateResponse($response, CreateResponse::class); } /** @@ -91,7 +91,7 @@ class Webhook extends HttpApi $response = $this->httpPut(sprintf('/v3/domains/%s/webhooks/%s', $domain, $id), $params); - return $this->safeHydrate($response, UpdateResponse::class); + return $this->hydrateResponse($response, UpdateResponse::class); } /** @@ -107,6 +107,6 @@ class Webhook extends HttpApi $response = $this->httpDelete(sprintf('/v3/domains/%s/webhooks/%s', $domain, $id)); - return $this->safeHydrate($response, DeleteResponse::class); + return $this->hydrateResponse($response, DeleteResponse::class); } } diff --git a/src/Mailgun/Exception/DeserializeException.php b/src/Mailgun/Exception/DeserializeException.php index a67b016..2942869 100644 --- a/src/Mailgun/Exception/DeserializeException.php +++ b/src/Mailgun/Exception/DeserializeException.php @@ -11,6 +11,6 @@ namespace Mailgun\Exception; use Mailgun\Exception; -class DeserializeException extends \RuntimeException implements Exception +final class DeserializeException extends \RuntimeException implements Exception { } diff --git a/src/Mailgun/Exception/HttpClientException.php b/src/Mailgun/Exception/HttpClientException.php index a1f2f4d..8db2469 100644 --- a/src/Mailgun/Exception/HttpClientException.php +++ b/src/Mailgun/Exception/HttpClientException.php @@ -10,29 +10,54 @@ namespace Mailgun\Exception; use Mailgun\Exception; +use Psr\Http\Message\ResponseInterface; /** * @author Tobias Nyholm */ -class HttpClientException extends \RuntimeException implements Exception +final class HttpClientException extends \RuntimeException implements Exception { - public static function badRequest() + /** + * @var ResponseInterface|null + */ + private $response; + + /** + * @param string $message + * @param int $code + * @param ResponseInterface|null $response + */ + public function __construct($message, $code, ResponseInterface $response = null) { - return new self('The parameters passed to the API were invalid. Check your inputs!', 400); + parent::__construct($message, $code); + $this->response = $response; } - public static function unauthorized() + public static function badRequest(ResponseInterface $response = null) { - return new self('Your credentials are incorrect.', 401); + return new self('The parameters passed to the API were invalid. Check your inputs!', 400, $response); } - public static function requestFailed() + public static function unauthorized(ResponseInterface $response = null) { - return new self('Parameters were valid but request failed. Try again.', 402); + return new self('Your credentials are incorrect.', 401, $response); } - public static function notFound() + public static function requestFailed(ResponseInterface $response = null) { - return new self('The endpoint you tried to access does not exist. Check your URL.', 404); + return new self('Parameters were valid but request failed. Try again.', 402, $response); + } + + public static function notFound(ResponseInterface $response = null) + { + return new self('The endpoint you tried to access does not exist. Check your URL.', 404, $response); + } + + /** + * @return ResponseInterface + */ + public function getResponse() + { + return $this->response; } } diff --git a/src/Mailgun/Exception/HttpServerException.php b/src/Mailgun/Exception/HttpServerException.php index 0c07a2b..3d5aa27 100644 --- a/src/Mailgun/Exception/HttpServerException.php +++ b/src/Mailgun/Exception/HttpServerException.php @@ -14,7 +14,7 @@ use Mailgun\Exception; /** * @author Tobias Nyholm */ -class HttpServerException extends \RuntimeException implements Exception +final class HttpServerException extends \RuntimeException implements Exception { public static function serverError($httpStatus = 500) { diff --git a/src/Mailgun/Exception/InvalidArgumentException.php b/src/Mailgun/Exception/InvalidArgumentException.php index b6bb246..3b3e6d7 100644 --- a/src/Mailgun/Exception/InvalidArgumentException.php +++ b/src/Mailgun/Exception/InvalidArgumentException.php @@ -14,6 +14,6 @@ use Mailgun\Exception; /** * @author Tobias Nyholm */ -class InvalidArgumentException extends \InvalidArgumentException implements Exception +final class InvalidArgumentException extends \InvalidArgumentException implements Exception { } diff --git a/src/Mailgun/Exception/UnknownErrorException.php b/src/Mailgun/Exception/UnknownErrorException.php new file mode 100644 index 0000000..23b3a21 --- /dev/null +++ b/src/Mailgun/Exception/UnknownErrorException.php @@ -0,0 +1,19 @@ + + */ +final class UnknownErrorException extends \Exception implements Exception +{ +} diff --git a/src/Mailgun/Hydrator/ArrayHydrator.php b/src/Mailgun/Hydrator/ArrayHydrator.php index 548e636..98be108 100644 --- a/src/Mailgun/Hydrator/ArrayHydrator.php +++ b/src/Mailgun/Hydrator/ArrayHydrator.php @@ -25,7 +25,7 @@ class ArrayHydrator implements Hydrator * * @return array */ - public function deserialize(ResponseInterface $response, $class) + public function hydrate(ResponseInterface $response, $class) { $body = $response->getBody()->__toString(); if (strpos($response->getHeaderLine('Content-Type'), 'application/json') !== 0) { diff --git a/src/Mailgun/Hydrator/Hydrator.php b/src/Mailgun/Hydrator/Hydrator.php index 68cb3c7..212c3c3 100644 --- a/src/Mailgun/Hydrator/Hydrator.php +++ b/src/Mailgun/Hydrator/Hydrator.php @@ -22,5 +22,5 @@ interface Hydrator * * @return mixed */ - public function deserialize(ResponseInterface $response, $class); + public function hydrate(ResponseInterface $response, $class); } diff --git a/src/Mailgun/Hydrator/ModelHydrator.php b/src/Mailgun/Hydrator/ModelHydrator.php index e16ef32..580b190 100644 --- a/src/Mailgun/Hydrator/ModelHydrator.php +++ b/src/Mailgun/Hydrator/ModelHydrator.php @@ -26,7 +26,7 @@ class ModelHydrator implements Hydrator * * @return ResponseInterface */ - public function deserialize(ResponseInterface $response, $class) + public function hydrate(ResponseInterface $response, $class) { $body = $response->getBody()->__toString(); $contentType = $response->getHeaderLine('Content-Type'); diff --git a/src/Mailgun/Hydrator/NoopHydrator.php b/src/Mailgun/Hydrator/NoopHydrator.php index 9f2cb02..478cd4d 100644 --- a/src/Mailgun/Hydrator/NoopHydrator.php +++ b/src/Mailgun/Hydrator/NoopHydrator.php @@ -24,7 +24,7 @@ class NoopHydrator implements Hydrator * * @throws \LogicException */ - public function deserialize(ResponseInterface $response, $class) + public function hydrate(ResponseInterface $response, $class) { throw new \LogicException('The NoopHydrator should never be called'); } diff --git a/tests/Api/TestCase.php b/tests/Api/TestCase.php index bf59b36..8e597a7 100644 --- a/tests/Api/TestCase.php +++ b/tests/Api/TestCase.php @@ -59,7 +59,7 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase ->getMock(); $hydrator = $this->getMockBuilder('Mailgun\Hydrator\Hydrator') - ->setMethods(['deserialize']) + ->setMethods(['hydrate']) ->getMock(); return $this->getMockBuilder($this->getApiClass())