seekat
, (*1)
Fluent Github API access with ext-http., (*2)
Support for the following promise providers built in:
* ReactPHP
* AmPHP, (*3)
Supports plugging into your favourite event loop through
http\Client's custom event loop interface., (*4)
Simple example:, (*5)
<?php
use seekat\API;
$api = new API(API\Future\react());
$api->repos->m6w6->seekat->readme->as("html")->then(function($readme) {
echo $readme;
}, function($error) {
echo $error;
});
$api->send();
Full example:, (*6)
<?php
require_once __DIR__."/../vendor/autoload.php";
use seekat\API;
use function seekat\API\Links\next;
$cli = new http\Client("curl", "seekat");
$cli->configure([
"max_host_connections" => 10,
"max_total_connections" => 50,
]);
$log = new Monolog\Logger("seekat");
$log->pushHandler(new Monolog\Handler\StreamHandler(STDERR, Monolog\Logger::WARNING));
$api = new API(API\Future\react(), [
"Authorization" => "token ".getenv("GITHUB_TOKEN")
], null, $cli, $log);
$api(function($api) {
$repos = yield $api->users->m6w6->repos([
"visibility" => "public",
"affiliation" => "owner"
]);
while ($repos) {
$next = next($repos);
$batch = [];
foreach ($repos as $repo) {
$batch[] = $repo->hooks();
}
foreach (yield $batch as $key => $hooks) {
if (!count($hooks)) {
continue;
}
printf("%s:\n", $repos->{$key}->name);
foreach ($hooks as $hook) {
if ($hook->name == "web") {
printf("\t%s\n", $hook->config->url);
} else {
printf("\t%s\n", $hook->name);
}
}
}
$repos = yield $next;
}
});
Installing
Composer
composer require m6w6/seekat
ChangeLog
A comprehensive list of changes can be obtained from the
releases overview., (*7)
License
seekat is licensed under the 2-Clause-BSD license, which can be found in
the accompanying LICENSE file., (*8)
Contributing
All forms of contribution are welcome! Please see the bundled
CONTRIBUTING note for the general principles followed., (*9)
The list of past and current contributors is maintained in THANKS., (*10)