d1ff87969c60eeae224d3eff466fbd2b05492436
[m6w6/seekat] / examples / watchowned.php
1 #!/usr/bin/env php
2 <?php
3
4 use http\Client;
5 use Monolog\Handler\StreamHandler;
6 use Monolog\Logger;
7 use seekat\API;
8 use seekat\API\Links;
9
10 require_once __DIR__."/../vendor/autoload.php";
11
12 $log = new Monolog\Logger("seekat");
13 $log->pushHandler((new Monolog\Handler\StreamHandler(STDERR))
14 ->setLevel(Monolog\Logger::WARNING));
15
16 $cli = new http\Client("curl", "seekat");
17
18 $api = new API(API\Future\amp(), [
19 "Authorization" => "token ".getenv("GITHUB_TOKEN")
20 ], null, $cli, $log);
21
22 $api(function($api) {
23 $count = 0;
24 $subscribed = yield $api->user->subscriptions(["per_page" => 3]);
25
26 while ($subscribed) {
27 /* pro-actively queue the next request */
28 $next = Links\next($subscribed);
29 foreach ($subscribed->getData() as $subscription) {
30 if ($subscription->fork) {
31 printf("skipping fork %s\n", $subscription->full_name);
32 continue;
33 }
34 ++$count;
35 printf("watching %s owned by %s (repo is %s)\n",
36 $subscription->full_name,
37 $subscription->owner->login,
38 $subscription->private ? "private" : "public"
39 );
40 }
41 $subscribed = yield $next;
42 }
43 return $count;
44 })->onResolve(function($error, $count) {
45 printf("Listed %d repos\n", $count);
46 });