url->mod(uri_template("./repos/{+repo}", $this->args)); return $this->requestUrl($url); } function requestUrl($url) { $request = new Request("GET", $url, [ "Authorization" => "token " . $this->api->getToken(), "Accept" => $this->config->api->accept, ]); return $request; } function response(Response $response) { if ($response->getResponseCode() >= 400 || null === ($json = json_decode($response->getBody()))) { throw new RequestException($response); } if ($response->getResponseCode() >= 300 && $response->getResponseCode() < 400) { $this->api->getClient()->enqueue( $this->requestUrl($json->url), function($response) { try { $this->deferred->resolve($this->response($response)); } catch (\Exception $e) { $this->deferred->reject($e); } return true; } ); return $this->deferred->promise(); } $result = [$json]; $this->saveToCache($result); return $result; } }