url = $api_url; $this->options = [ 'auth_bearer' => $token, 'headers' => [ 'accept-version' => $version, ], ]; $this->client = HttpClient::createForBaseUri( sprintf('https://%s', $api_url), $this->options ); $this->cache = $cache; dump($this->cache); } public function scopeFromBase(string $scope): string { return sprintf('https://%s/%s', $this->url, ltrim($scope, '/')); } private function scopeId(string $scope_string): string { return "webflow_api_" . sha1($scope_string); } public function get(string $scope, int $ttl = 300): ResponseInterface { $id = $this->scopeId($scope); if ($ttl <= 0) return $this->client->request('GET', $this->scopeFromBase($scope), ); $item = $this->cache->get($id, function (ItemInterface $item) use ($scope, $ttl) { $item->expiresAfter($ttl); $response = $this->client->request('GET', $this->scopeFromBase($scope), ); if ($response->getStatusCode() >= 300) return; $item->set([ 'header' => $response->getHeaders(), 'content' => $response->getContent(), ]); $this->cache->save($item); return $item->get(); }); $this->cache->commit(); return MockResponse::fromRequest('GET', $scope, $item['header'], new MockResponse($item['content'])); } } ?>