m6w6/seekat

seekat wraps github api in php

dev-master 2022-06-09 21:28 UTC

This package is auto-updated.

Last update: 2024-04-10 01:08:39 UTC


README

Build Status

Fluent Github API access with ext-http.

Support for the following promise providers built in:

Supports plugging into your favourite event loop through http\Client's custom event loop interface.

Simple example:

<?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:

<?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.

License

seekat is licensed under the 2-Clause-BSD license, which can be found in the accompanying LICENSE file.

Contributing

All forms of contribution are welcome! Please see the bundled CONTRIBUTING note for the general principles followed.

The list of past and current contributors is maintained in THANKS.