<?php use GithubService\GithubArtaxService\GithubService; use ArtaxServiceBuilder\ResponseCache\NullResponseCache; use Amp\Artax\Client as ArtaxClient; use ArtaxServiceBuilder\BadResponseException; use ArtaxServiceBuilder\Oauth2Token; use GithubService\Hydrator\HydratorException; require_once "testBootstrap.php"; $injector = createProvider(); $reactor = \Amp\reactor(); $cache = new NullResponseCache(); $client = new ArtaxClient(); $client->setOption(ArtaxClient::OP_MS_CONNECT_TIMEOUT, 5000); $client->setOption(ArtaxClient::OP_MS_KEEP_ALIVE_TIMEOUT, 1000); $githubAPI = new GithubService($client, $reactor, $cache, "Danack/test"); $token = @file_get_contents("../../GithubToken.txt"); $oauthToken = null; if ($token) { $oauthToken = new Oauth2Token($token); } try { $tagListRequest = $githubAPI->listRepoTags(null, "Danack", "GithubArtaxService"); $tagList = $tagListRequest->execute(); foreach ($tagList as $tag) { /** @var $tag \GithubService\Model\Tag */ printf("tag name %s, commmit %s \n", $tag->name, $tag->commit->sha); } $emojiResult = $githubAPI->listEmojis(null)->execute(); foreach ($emojiResult->emojis as $emoji) { echo $emoji->name . " \n";
/** * @param GithubService $api * @param $accessResponse */ function processAddEmail(GithubService $api, $accessResponse) { $newEmail = getVariable('email'); $emailCommand = $api->addUserEmails(new Oauth2Token($accessResponse->accessToken), [$newEmail]); $allowedScopes = getAuthorisations(); if (false) { //This isn't working yet. $emailCommand->checkScopeRequirement($allowedScopes); } $emailCommand->execute(); $request = $emailCommand->createRequest(); $request->setBody(json_encode([$newEmail])); $response = $emailCommand->dispatch($request); }
<?php $autoloader = (require __DIR__ . '/../vendor/autoload.php'); use GithubService\GithubArtaxService\GithubService; use Amp\Artax\Client as ArtaxClient; use ArtaxServiceBuilder\ResponseCache\FileResponseCache; use GithubService\AuthToken\NullToken; $github = new GithubService(new ArtaxClient(), \Amp\reactor(), new FileResponseCache(__DIR__ . "/fileCache"), 'Danack/GithubArtaxService'); $command = $github->listRepoTags(new NullToken(), 'php', 'php-src'); $listRepoTags = $command->execute(); $statusCode = $command->getOriginalResponse()->getStatus(); if ($statusCode == 304) { echo "YAY! 304 response so data read from cache. This request did not count against the rate limit.\n"; } else { echo "Cache miss.\n"; } $rateLimit = $github->getRateLimit(); //Alternatively you can create the rate limit object from the original response //$rateLimit = \GithubService\RateLimit::createFromResponse($command->getOriginalResponse()); if ($rateLimit) { echo sprintf("Rate limit info:\n Remaining: %d\n Reset time: %d\n", $rateLimit->remaining, $rateLimit->resetTime); } else { echo "No rate limit information was in the response.\n"; }
<?php $autoloader = (require __DIR__ . '/../vendor/autoload.php'); use GithubService\GithubArtaxService\GithubService; use Amp\Artax\Client as ArtaxClient; use ArtaxServiceBuilder\ResponseCache\NullResponseCache; use GithubService\Model\Tags; use GithubService\AuthToken\NullToken; function displayTags(Tags $repoTags) { foreach ($repoTags as $nextRepoTag) { echo "Found tag: " . $nextRepoTag->name . "\n"; } } $github = new GithubService(new ArtaxClient(), \Amp\reactor(), new NullResponseCache(), 'Danack/GithubArtaxService'); echo "Tags on first page:\n"; //Get the first page of data $command = $github->listRepoTags(new NullToken(), 'php', 'php-src'); $repoTags = $command->execute(); displayTags($repoTags);
use ArtaxServiceBuilder\ResponseCache\NullResponseCache; use GithubService\AuthToken\NullToken; use GithubService\GithubArtaxService\GithubService; use GithubService\Model\Tags; // Create the appropriate Amp reactor for your system. This depends on // which extensions you have loaded: // uv extension - UvReactor; // libevent extension - LibeventReactor; // otherwise a NativeReactor is used. $reactor = \Amp\reactor(); $artaxClient = new ArtaxClient(); // The reactor keeps running while the socket is open. Set a short // timeout to avoid waiting around too long $artaxClient->setOption(\Amp\Artax\Client::OP_MS_KEEP_ALIVE_TIMEOUT, 1); // Create the GithubService with the prepared client $github = new GithubService($artaxClient, $reactor, new NullResponseCache(), 'Danack/GithubArtaxService'); //Get the first page of data $command = $github->listRepoTags(new NullToken(), 'php', 'php-src'); $listRepoTagsCallback = function (Exception $exception = null, Tags $repoTags, Response $response = null) use($github) { if ($exception) { echo "An error occurred: " . $exception->getMessage(); return; } echo "Tags on first page:\n"; foreach ($repoTags as $repoTag) { echo "Found tag: " . $repoTag->name . "\n"; } $pages = $repoTags->pager->getAllKnownPages(); foreach ($pages as $page) { $command = $github->listRepoTagsPaginate(new NullToken(), $page); $callback = getListRepoTagsPagingCallback($page);
<?php use GithubService\AuthToken\Oauth2Token; use GithubService\GithubArtaxService\GithubService; use Amp\Artax\Client as ArtaxClient; use ArtaxServiceBuilder\ResponseCache\NullResponseCache; $autoloader = (require __DIR__ . '/../vendor/autoload.php'); $github = new GithubService(new ArtaxClient(), \Amp\reactor(), new NullResponseCache(), 'Danack/GithubArtaxService'); $tokenFileLocation = __DIR__ . "/../../github_oauth_token.txt"; $existingToken = @file_get_contents($tokenFileLocation); $existingToken = trim($existingToken); if ($existingToken) { echo "Using token from file {$tokenFileLocation} \n"; $token = new Oauth2Token($existingToken); } else { echo "Enter username:\n"; $username = trim(fgets(STDIN)); echo "Enter password (warning - not masked for this example):\n"; $password = trim(fgets(STDIN)); /** * @param $instruction * @return string */ $enterPasswordCallback = function ($instruction) { echo $instruction . "\n"; $oneTimePassword = trim(fgets(STDIN)); return $oneTimePassword; }; $noteURL = 'http://www.github.com/danack/GithubArtaxService'; $note = "Testing Oauth creation: " . time(); //This must be unique to create a new Oaut key
public function showAuthorizations(GithubService $api, AccessResponse $accessResponse) { try { echo "<p>This function is likely to fail. It appears that Github do not support it through the api with bearer tokens.</p>"; //$api = new GithubAPI(GITHUB_USER_AGENT); $authCommand = $api->getAuthorizations(new Oauth2Token($accessResponse->accessToken)); $authorisations = $authCommand->execute(); foreach ($authorisations->getIterator() as $authorisation) { echo "Application: " . $authorisation->application . "<br/>"; echo "Scopes:" . implode($authorisation->scopes) . "<br/>"; echo "<br/>"; } } catch (\GithubService\GithubArtaxService\GithubArtaxServiceException $gae) { echo "<p>Error in showAuthorizations: "; echo $gae->getMessage(); echo "</p>"; } }