rx / http
Http Client for RxPHP
Installs: 1 445
Dependents: 2
Suggesters: 0
Security: 0
Stars: 22
Watchers: 4
Forks: 2
Open Issues: 1
Requires
- php: >=7.0
- react/http-client: ^0.5.0
- reactivex/rxphp: ^2.0
- voryx/event-loop: ^3.0 || ^2.0
Requires (Dev)
- phpunit/phpunit: ^9.5
README
This library is a RxPHP wrapper for the ReactPHP's Http-client library. It allows you to make asynchronous http calls and emit the results through an RxPHP observable.
It uses the Voryx event-loop which behaves like the Javascript event-loop. ie. You don't need to start it.
##Installation
Install dependencies using composer
$ php composer.phar require "rx/http"
Usage
Get
$source = \Rx\React\Http::get('https://www.example.com/'); $source->subscribe( function ($data) { echo $data, PHP_EOL; }, function (\Exception $e) { echo $e->getMessage(), PHP_EOL; }, function () { echo "completed", PHP_EOL; } );
Post
$postData = json_encode(["test" => "data"]); $headers = ['Content-Type' => 'application/json']; $source = \Rx\React\Http::post('https://www.example.com/', $postData, $headers); $source->subscribe( function ($data) { echo $data, PHP_EOL; }, function (\Exception $e) { echo $e->getMessage(), PHP_EOL; }, function () { echo "completed", PHP_EOL; } );
Multiple Asynchronous Requests
$imageTypes = ["png", "jpeg", "webp"]; $images = \Rx\Observable::fromArray($imageTypes) ->flatMap(function ($type) { return \Rx\React\Http::get("http://httpbin.org/image/{$type}")->map(function ($image) use ($type) { return [$type => $image]; }); }); $images->subscribe( function ($data) { echo "Got Image: ", array_keys($data)[0], PHP_EOL; }, function (\Exception $e) { echo $e->getMessage(), PHP_EOL; }, function () { echo "completed", PHP_EOL; } );
For more information, see the examples.