/** * * @return Configuration */ public function getConfiguration() { return $this->_chainable_configurator->getConfiguration(); }
/** * @param string $url * @return \stdClass * @throws \GitHub\RateLimitException */ public static function request($url, $writeHeaders = false, $method = 'get') { if (self::$authenticatedApp == true) { extract(self::$authApp); $url .= "?client_id={$id}&client_secret={$secret}"; } $data = []; $page = true; while ($page) { $curl = new Chainable(new cURL($url)); if (self::$authenticatedUser) { $curl->setopt(CURLOPT_HTTPAUTH, CURLAUTH_BASIC)->setopt(CURLOPT_USERPWD, self::$authUser); } $rqheaders = ['Content-Type: application/json']; switch ($method) { case 'get': break; case 'post': $curl->setopt(CURLOPT_POST, true)->setopt(CURLOPT_POSTFIELDS, self::$rqdata)->setopt(CURLOPT_HTTPHEADER, $rqheaders); break; case 'patch': $curl->setopt(CURLOPT_CUSTOMREQUEST, 'PATCH')->setopt(CURLOPT_POSTFIELDS, self::$rqdata)->setopt(CURLOPT_HTTPHEADER, $rqheaders); break; case 'delete': $curl->setopt(CURLOPT_CUSTOMREQUEST, 'DELETE'); } self::$rqdata = ''; $curl->setopt(CURLOPT_REFERER, "http://" . \App::get('domain'))->setopt(CURLOPT_USERAGENT, self::$userAgent)->setopt(CURLOPT_HEADER, true)->setopt(CURLOPT_RETURNTRANSFER, true)->setopt(CURLOPT_TIMEOUT, 10)->setopt(CURLOPT_FRESH_CONNECT, true)->exec()->_get_return($response)->getinfo(CURLINFO_HEADER_SIZE)->_get_return($header_size)->close(); $headers = \parseCurlHeaders(substr($response, 0, $header_size))[0]; $ratelimitRemaining = $headers['X-RateLimit-Remaining']; $time = date("Y-m-d H:i:s"); self::$requests[] = "{$url} - {$ratelimitRemaining} - {$time}"; if (isset($headers['X-RateLimit-Remaining']) && $headers['X-RateLimit-Remaining'] == 0) { throw new \GitHub\RateLimitException('Rate limit exceeded - Will be reset on ' . date("Y-m-d H:i:s", $headers['X-RateLimit-Reset'])); } if (isset($headers['Link'])) { if ($result = self::parseLinkHeader($headers['Link'])) { if (isset($result['next'])) { $url = $result['next']; $page = true; } else { $page = false; } } else { $pagee = false; } } else { $page = false; } $dat = substr($response, $header_size); $dat = \JSON::decode($dat); $data[] = $dat; } $return = []; if (count($data) == 1) { $return = $data[0]; } else { foreach ($data as $page) { $return = array_merge($return, $page); } } if ($writeHeaders) { self::$lastHead = $headers; } return (object) $return; }