From f0b822591b8b8398977e661afc0a6a925ad1f775 Mon Sep 17 00:00:00 2001 From: ddattee Date: Fri, 15 Jun 2018 11:38:12 +0200 Subject: [PATCH 1/2] Adding resource stat header handler --- src/Client/Client.php | 3 + .../Middleware/ResourceStateHandler.php | 62 +++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 src/Guzzle/Middleware/ResourceStateHandler.php diff --git a/src/Client/Client.php b/src/Client/Client.php index 0011889..64d54e9 100644 --- a/src/Client/Client.php +++ b/src/Client/Client.php @@ -82,6 +82,9 @@ private function createHandlerStack(ClientOptions $options) $stack = HandlerStack::create(); $logger = $options->getLogger(); + $handler = new SfMiddleware\ResourceStateHandler($logger); + $stack->push(Middleware::retry([$handler, 'decide'], [$handler, 'logState'])); + if ($options->handleRateLimit()) { $handler = new SfMiddleware\RateLimitHandler(3, $logger); $stack->push(Middleware::retry([$handler, 'decide'], [$handler, 'delay'])); diff --git a/src/Guzzle/Middleware/ResourceStateHandler.php b/src/Guzzle/Middleware/ResourceStateHandler.php new file mode 100644 index 0000000..3b31df3 --- /dev/null +++ b/src/Guzzle/Middleware/ResourceStateHandler.php @@ -0,0 +1,62 @@ +logger = $logger; + } + + /** + * @param ResponseInterface|null $response + * + * @return bool + */ + public function decide($count, RequestInterface $request, ResponseInterface $response) + { + $this->request = $request; + + if (! $response->getHeaderLine('X-Api-Resource-State')) { + return false; + } + + return true; + } + + /** + * @param int $retries + * @param ResponseInterface $response + */ + public function logState($retries, ResponseInterface $response) + { + $state = $response->getHeader('X-Api-Resource-State'); + if (null !== $this->logger && $state !== self::STATE_STABLE) { + $this->logger->info(sprintf('Resource %s is in %s state', $this->request->getUri(), $state)); + } + } +} From 5f8bd85ab821723279385135b07868d5215fac8c Mon Sep 17 00:00:00 2001 From: ddattee Date: Fri, 15 Jun 2018 14:40:27 +0200 Subject: [PATCH 2/2] Changing middleware to a log one --- src/Client/Client.php | 7 ++- .../Middleware/ResourceStateHandler.php | 62 ------------------- 2 files changed, 4 insertions(+), 65 deletions(-) delete mode 100644 src/Guzzle/Middleware/ResourceStateHandler.php diff --git a/src/Client/Client.php b/src/Client/Client.php index 64d54e9..ab70d3a 100644 --- a/src/Client/Client.php +++ b/src/Client/Client.php @@ -82,9 +82,6 @@ private function createHandlerStack(ClientOptions $options) $stack = HandlerStack::create(); $logger = $options->getLogger(); - $handler = new SfMiddleware\ResourceStateHandler($logger); - $stack->push(Middleware::retry([$handler, 'decide'], [$handler, 'logState'])); - if ($options->handleRateLimit()) { $handler = new SfMiddleware\RateLimitHandler(3, $logger); $stack->push(Middleware::retry([$handler, 'decide'], [$handler, 'delay'])); @@ -98,6 +95,10 @@ private function createHandlerStack(ClientOptions $options) if ($logger) { $stack->push(Middleware::log($logger, new MessageFormatter())); + $stack->push(Middleware::log( + $logger, + new MessageFormatter('Resource {uri} is in {res_header_x-api-resource-state} state') + )); } return $stack; diff --git a/src/Guzzle/Middleware/ResourceStateHandler.php b/src/Guzzle/Middleware/ResourceStateHandler.php deleted file mode 100644 index 3b31df3..0000000 --- a/src/Guzzle/Middleware/ResourceStateHandler.php +++ /dev/null @@ -1,62 +0,0 @@ -logger = $logger; - } - - /** - * @param ResponseInterface|null $response - * - * @return bool - */ - public function decide($count, RequestInterface $request, ResponseInterface $response) - { - $this->request = $request; - - if (! $response->getHeaderLine('X-Api-Resource-State')) { - return false; - } - - return true; - } - - /** - * @param int $retries - * @param ResponseInterface $response - */ - public function logState($retries, ResponseInterface $response) - { - $state = $response->getHeader('X-Api-Resource-State'); - if (null !== $this->logger && $state !== self::STATE_STABLE) { - $this->logger->info(sprintf('Resource %s is in %s state', $this->request->getUri(), $state)); - } - } -}