1
0
Fork 0

Merge pull request #3929 from phansys/ticket_3859

[bugfix] Fix for #3859
pull/3871/merge
Jordi Boggiano 2015-04-14 23:30:15 +01:00
commit 66dc66c283
1 changed files with 37 additions and 27 deletions

View File

@ -51,6 +51,9 @@ EOT
;
}
/**
* {@inheritdoc}
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$composer = $this->getComposer(false);
@ -98,8 +101,9 @@ EOT
}
} else {
$this->getIO()->write('Checking github.com rate limit: ', false);
try {
$rate = $this->getGithubRateLimit('github.com');
$this->outputResult(true);
if (10 > $rate['remaining']) {
$this->getIO()->write('<warning>WARNING</warning>');
$this->getIO()->write(sprintf(
@ -111,8 +115,13 @@ EOT
$rate['remaining'],
$rate['limit']
));
}
} catch (\Exception $e) {
if ($e instanceof TransportException && $e->getCode() === 401) {
$this->outputResult('<comment>The oauth token for '.$domain.' seems invalid, run "composer config --global --unset github-oauth.'.$domain.'" to remove it</comment>');
} else {
$this->getIO()->write('<info>OK</info>');
$this->outputResult($e);
}
}
}
@ -263,25 +272,23 @@ EOT
}
}
/**
* @param string $domain
* @param string $token
* @return array
* @throws TransportException
*/
private function getGithubRateLimit($domain, $token = null)
{
if ($token) {
$this->getIO()->setAuthentication($domain, $token, 'x-oauth-basic');
}
try {
$url = $domain === 'github.com' ? 'https://api.'.$domain.'/rate_limit' : 'https://'.$domain.'/api/rate_limit';
$json = $this->rfs->getContents($domain, $url, false, array('retry-auth-failure' => false));
$data = json_decode($json, true);
return $data['resources']['core'];
} catch (\Exception $e) {
if ($e instanceof TransportException && $e->getCode() === 401) {
return '<comment>The oauth token for '.$domain.' seems invalid, run "composer config --global --unset github-oauth.'.$domain.'" to remove it</comment>';
}
return $e;
}
}
private function checkDiskSpace($config)
@ -308,6 +315,9 @@ EOT
return true;
}
/**
* @param bool|string|\Exception $result
*/
private function outputResult($result)
{
if (true === $result) {