KnpLabs / KnpLabs/php-github-api

Feature idea - throttling rate limiter plugin

Offen
#973 0 Kommentare 4 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

feature-request good first issue
Vorherrschende Sprache
PHP
Sterne
2.2k
Forks
585
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Something like this would come in handy:

<?php declare(strict_types = 1);

use Github\Api\RateLimit\RateLimitResource;
use Github\Client;
use Http\Client\Common\Plugin;
use Http\Promise\Promise;
use Psr\Http\Message\RequestInterface;

class RateLimitPlugin implements Plugin
{

	private Client $client;

	public function setClient(Client $client): void
	{
		$this->client = $client;
	}

	public function handleRequest(RequestInterface $request, callable $next, callable $first): Promise
	{
		$path = $request->getUri()->getPath();
		if ($path === '/rate_limit') {
			return $next($request);
		}

		/** @var RateLimitResource $resource */
		$resource = $this->client->api('rate_limit')->getResource('core');
		if ($resource->getRemaining() < 10) {
			$reset = $resource->getReset();
			$sleepFor = $reset - time();
			if ($sleepFor > 0) {
				sleep($sleepFor);
			}
		}

		return $next($request);
	}

}

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Das Issue nennt Client, RateLimitResource und die Request-Handling-Methoden des Plugins, aber keine Repository-Dateien, Tests oder Akzeptanzkriterien. Beginne damit, diese Einstiegspunkte zu finden, und kläre die unterstützten Schwellenwerte, das Warteverhalten und die Erwartungen an die Tests; das Issue definiert nicht, woran die Fertigstellung erkennbar ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
php
Bereich
api
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.