Exemplo n.º 1
0
 /**
  *
  * @return Configuration
  */
 public function getConfiguration()
 {
     return $this->_chainable_configurator->getConfiguration();
 }
Exemplo n.º 2
0
 /**
  * @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;
 }