kinetis / revolt-http-client
A Revolt-native, Fiber-suspending implementation of Symfony's HttpClientInterface — usable standalone by any project (AsyncAws or otherwise), not only Kinetis.
Requires
- php: ^8.4
- amphp/http-client: ^5.3
- symfony/http-client: ^8.0
- symfony/http-client-contracts: ^3.7
Requires (Dev)
- infection/infection: ^0.34.2
- kinetis/framework: ^1.6
- phpstan/phpstan: ^2.2
- phpunit/phpunit: ^11.0
- vimeo/psalm: ^6.16
README
kinetis/revolt-http-client
A Revolt-native, Fiber-suspending implementation of Symfony's HttpClientInterface
Built for Kinetis, but usable in
any PHP project — this package depends on nothing beyond
symfony/http-client (and its symfony/http-client-contracts) and
amphp/http-client. No kinetis/framework required.
use Kinetis\RevoltHttpClient\AmpHttpClientFactory; $client = AmpHttpClientFactory::create(); $response = $client->request('GET', 'https://example.com/'); $response->getContent();
A request made through this client suspends the calling Fiber and yields back to Revolt's event loop while waiting on the network, instead of blocking the whole process.
Using it with AsyncAws
Every AsyncAws client — S3, SQS, SES, DynamoDB, or any of its other
services — extends AsyncAws\Core\AbstractApi, whose constructor takes
an optional ?HttpClientInterface $httpClient:
use AsyncAws\S3\S3Client; use Kinetis\RevoltHttpClient\AmpHttpClientFactory; $s3 = new S3Client(['region' => 'us-east-1'], null, AmpHttpClientFactory::create());
Nothing about this is Kinetis-specific — the same pattern works for any
other library that accepts an injectable HttpClientInterface.
Installation
composer require kinetis/revolt-http-client
Requires PHP 8.4+ (the floor symfony/http-client:^8.0 itself requires).
Full documentation:
docs.kinetis.dev/revolt-http-client.html.
License
MIT — see LICENSE.