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') + ); } }