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.

Maintainers

Package info

github.com/kinetis-dev/revolt-http-client

pkg:composer/kinetis/revolt-http-client

Transparency log

Statistics

Installs: 63

Dependents: 6

Suggesters: 0

Stars: 0

Open Issues: 0

v1.2.1 2026-08-20 18:17 UTC

This package is auto-updated.

Last update: 2026-08-20 18:17:50 UTC


README

Kinetis

kinetis/revolt-http-client
A Revolt-native, Fiber-suspending implementation of Symfony's HttpClientInterface

Packagist Version Packagist Downloads PHP Version License CI

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\Http;

$http = new Http()->withBaseUrl('https://api.example.com')->withToken($key);

$orders = $http->get('/orders', ['status' => 'open'])->throw()->json();
$http->post('/orders', ['sku' => 'A1', 'quantity' => 2]);

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 — so several run at once through Kinetis\Async\concurrently() with no pooling API of its own.

An error status is returned rather than thrown: successful(), failed(), clientError(), and serverError() are answers to branch on, and throw() opts into raising instead. Read the body with json(), jsonPath('customer.email'), or body().

AmpHttpClientFactory::create() returns the underlying Symfony HttpClientInterface on its own, for libraries that want to be handed a client:

use Kinetis\RevoltHttpClient\AmpHttpClientFactory;

$client = AmpHttpClientFactory::create();
$response = $client->request('GET', 'https://example.com/');

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: kinetis.dev/docs/revolt-http-client.html.

License

MIT — see LICENSE.