コード例 #1
0
ファイル: Discover.php プロジェクト: blazarecki/stage1
 /**
  * {@inheritDoc}
  */
 public function discover(User $user)
 {
     $client = clone $this->client;
     $client->setDefaultOption('headers/Authorization', 'token ' . $user->getProviderAccessToken('github'));
     $request = $client->get('/user/orgs');
     $response = $request->send();
     $data = $response->json();
     $orgRequests = [$client->get('/user/repos')];
     foreach ($data as $org) {
         $this->logger->debug(sprintf('adding "' . $org['repos_url'] . '" for crawl'));
         $orgRequests[] = $client->get($org['repos_url']);
     }
     $orgResponses = $client->send($orgRequests);
     $composerRequests = [];
     foreach ($orgResponses as $orgResponse) {
         $this->fetchRepos($orgResponse);
         if ($orgResponse->hasHeader('link')) {
             $link = $orgResponse->getHeader('link');
             if (preg_match('/.* <(.+?)\\?page=(\\d+)>; rel="last"$/', $link, $matches)) {
                 $pagesRequests = [];
                 for ($i = 2; $i <= $matches[2]; $i++) {
                     $this->logger->debug(sprintf('adding "' . ($matches[1] . '?page=' . $i) . '" for crawl'));
                     $pagesRequests[] = $client->get($matches[1] . '?page=' . $i);
                 }
                 $pagesResponses = $client->send($pagesRequests);
                 foreach ($pagesResponses as $pagesResponse) {
                     $this->fetchRepos($pagesResponse);
                 }
             }
         }
     }
     return $this->getImportableProjects();
 }
コード例 #2
0
 /**
  * @param User $user
  *
  * @return Client
  */
 public function configureClientForUser(User $user)
 {
     $accessToken = $user->getProviderAccessToken($this->getName());
     return $this->configureClientForAccessToken($accessToken);
 }
コード例 #3
0
 /**
  * {@inheritDoc}
  */
 public function setUser(User $user)
 {
     $this->user = $user;
     $providerName = $this->getProvider()->getName();
     if (strlen($user->hasProviderAccessToken($providerName))) {
         $this->setAccessToken($user->getProviderAccessToken($providerName));
     }
     return $this;
 }