Example #1
0
 /**
  * @todo use github api instead of relying on request parameters
  *
  * @param Project $project
  */
 protected function doInspect(Project $project)
 {
     try {
         $request = $this->client->get('/repos/' . $project->getFullName());
         $response = $request->send();
     } catch (\Guzzle\Http\Exception\ClientErrorResponseException $e) {
         $this->logger->error($e->getMessage());
         return false;
     }
     $infos = $response->json();
     # @todo @slug
     $project->setSlug(preg_replace('/[^a-z0-9\\-]/', '-', strtolower($infos['full_name'])));
     $providerData = ['id' => $infos['id'], 'owner_login' => $infos['owner']['login'], 'full_name' => $infos['full_name'], 'url' => $infos['url'], 'clone_url' => $infos['clone_url'], 'ssh_url' => $infos['ssh_url'], 'keys_url' => $infos['keys_url'], 'hooks_url' => $infos['hooks_url'], 'contents_url' => $infos['contents_url'], 'private' => $infos['private']];
     $project->setProviderName($this->provider->getName());
     $project->setProviderData($providerData);
     $project->setFullName($infos['full_name']);
     $project->setName($infos['name']);
     $project->setDockerBaseImage('symfony2:latest');
     $project->setIsPrivate($infos['private']);
     $project->setGitUrl($infos['private'] ? $infos['ssh_url'] : $infos['clone_url']);
     if (isset($infos['organization'])) {
         $this->logger->info('attaching project\'s organization', ['organization' => $infos['organization']['login']]);
         $rp = $this->doctrine->getRepository('Model:Organization');
         $org = $rp->findOneBy(['name' => $infos['organization']['login'], 'providerName' => $this->provider->getName()]);
         if (null === $org) {
             $this->logger->info('organization not found, creating', ['organization' => $infos['organization']['login']]);
             $orgKeys = $this->sshKeysGenerator->generate();
             $org = new Organization();
             $org->setName($infos['organization']['login']);
             $org->setPublicKey($orgKeys['public']);
             $org->setPrivateKey($orgKeys['private']);
             $org->setProviderName($this->provider->getName());
         }
         $project->setOrganization($org);
     } else {
         $this->logger->info('project has no organization, skipping');
     }
 }
Example #2
0
 /**
  * @param Project
  */
 protected function doInspect(Project $project)
 {
     try {
         $response = $this->client->get('2.0/repositories/' . $project->getProviderData('full_slug'))->send();
     } catch (\Guzzle\Http\Exception\ClientErrorResponseException $e) {
         $this->logger->error($e->getMessage());
         return false;
     }
     $infos = $response->json();
     # @todo @slug
     $project->setSlug(preg_replace('/[^a-z0-9\\-]/', '-', strtolower($infos['full_name'])));
     $providerData = ['id' => $infos['full_name'], 'owner_login' => $infos['owner']['username'], 'full_name' => sprintf('%s/%s', $infos['owner']['username'], $infos['name']), 'full_slug' => $infos['full_name'], 'private' => $infos['is_private'], 'url' => $infos['links']['self']['href']];
     foreach ($infos['links']['clone'] as $link) {
         switch ($link['name']) {
             case 'https':
                 $providerData['clone_url'] = $link['href'];
                 break;
             case 'ssh':
                 $providerData['ssh_url'] = $link['href'];
                 break;
         }
     }
     $project->setProviderName($this->provider->getName());
     $project->setProviderData($providerData);
     $project->setFullName($providerData['full_name']);
     $project->setName($infos['name']);
     $project->setIsPrivate($providerData['private']);
     $project->setGitUrl($providerData['private'] ? $providerData['ssh_url'] : $providerData['clone_url']);
     $project->setDockerBaseImage('stage1/symfony2');
     if (strpos($infos['owner']['links']['self']['href'], '.0/teams')) {
         $orgName = $infos['owner']['username'];
         $this->logger->info('attaching project\'s organization', ['organization' => $orgName]);
         $rp = $this->doctrine->getRepository('Model:Organization');
         $org = $rp->findOneBy(['name' => $orgName, 'providerName' => $this->provider->getName()]);
         if (null === $org) {
             $this->logger->info('organization not found, creating', ['organization' => $orgName]);
             $orgKeys = $this->sshKeysGenerator->generate();
             $org = new Organization();
             $org->setName($orgName);
             $org->setPublicKey($orgKeys['public']);
             $org->setPrivateKey($orgKeys['private']);
             $org->setProviderName($this->provider->getName());
         }
         $project->setOrganization($org);
     } else {
         $this->logger->info('project has no organization, skipping');
     }
 }