From da030f01fb7310201e47ed9420e49d9505c92dc5 Mon Sep 17 00:00:00 2001 From: Morten Poul Jensen Date: Tue, 12 Jun 2018 12:58:00 +0200 Subject: [PATCH] Handle if the limit header is not present --- src/Providers/DefaultRateLimitProvider.php | 26 +++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/Providers/DefaultRateLimitProvider.php b/src/Providers/DefaultRateLimitProvider.php index 11279ce..85214d1 100644 --- a/src/Providers/DefaultRateLimitProvider.php +++ b/src/Providers/DefaultRateLimitProvider.php @@ -76,8 +76,28 @@ public function getRequestAllowance(RequestInterface $request) */ public function setRequestAllowance(ResponseInterface $response) { - $callLimitHeader = collect($response->getHeader('HTTP_X_SHOPIFY_SHOP_API_CALL_LIMIT'))->first(); - [$callsMade, $callsLimit] = explode('/', $callLimitHeader); - Cache::forever($this->prefix . 'request_allowance', $this->calculator->calculate($callsMade, $callsLimit)); + Cache::forever($this->prefix . 'request_allowance', $this->calculateAllowanceFrom($response)); + } + + /** + * Calculate the request allowance from the response. + * + * @param ResponseInterface $response + * @return float + */ + protected function calculateAllowanceFrom(ResponseInterface $response) + { + $callLimitHeader = collect( + $response->getHeader('HTTP_X_SHOPIFY_SHOP_API_CALL_LIMIT') + )->first(); + + if ($callLimitHeader) { + [$callsMade, $callsLimit] = explode('/', $callLimitHeader); + return $this->calculator->calculate($callsMade, $callsLimit); + } + + return floatval( + config('shopify.rate_limit.processes') * config('shopify.rate_limit.cycle') + ); } }