KnpLabs / KnpLabs/php-github-api
Feature idea - throttling rate limiter plugin
Offen
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
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Ö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