flush
[m6w6/seekat] / examples / generator.php
1 #!/usr/bin/env php
2 <?php
3
4 require_once __DIR__."/../vendor/autoload.php";
5
6 use seekat\API;
7 use seekat\API\Links;
8
9 $log = new Monolog\Logger("seekat");
10 $log->pushHandler((new Monolog\Handler\StreamHandler(STDERR))->setLevel(Monolog\Logger::INFO));
11
12 $cli = new http\Client("curl", "seekat");
13
14 $api = new API(API\Future\react(), [
15 "Authorization" => "token ".getenv("GITHUB_TOKEN")
16 ], null, $cli, $log);
17
18 $api(function($api) {
19 $count = 0;
20 $events = yield $api->repos->m6w6->{"ext-pq"}->issues->events();
21 while ($events) {
22 /* pro-actively queue the next request */
23 $next = Links\next($events);
24
25 foreach ($events as $event) {
26 if ($event->event == "labeled" || $event->event == "unlabeled") {
27 continue;
28 }
29 ++$count;
30 printf("@%s %s issue #%d (%s) at %s\n",
31 $event->actor->login,
32 $event->event,
33 (int) (string) $event->issue->number,
34 $event->issue->title,
35 $event->created_at
36 );
37 }
38 $events = yield $next;
39 }
40 return $count;
41 })->when(function($error, $count) {
42 printf("Listed %d events\n", $count);
43 });
44