elfsundae / httpclient
A smart Guzzle wrapper provides convenient method chaining, global request options, and magic methods to customize request options.
2.2.0
2022-02-19 20:33 UTC
Requires
- php: >=5.6.4
- guzzlehttp/guzzle: ~6.3|~7.0
- illuminate/support: ~5.0|~6.0|~7.0|~8.0|~9.0
Requires (Dev)
- dms/phpunit-arraysubset-asserts: ^0.4.0
- mockery/mockery: ~1.0
- phpunit/phpunit: ~5.7|~6.0|~7.0|~8.0|~9.0
README
HttpClient is a smart Guzzle wrapper provides convenient method chaining, global request options, and magic methods to customize request options.
Installation
$ composer require elfsundae/httpclient
Usage
use ElfSundae\HttpClient;
Fetching Response Content
$html = (new HttpClient)->fetchContent('http://httpbin.org'); $data = (new HttpClient)->fetchJson('https://httpbin.org/ip');
Making Requests
$client = HttpClient::create('https://httpbin.org') ->catchExceptions(true) ->httpErrors(false) ->auth(['user', 'passwd']); $query = $client->query(['foo' => 'bar'])->getJson('/get'); $form = $client->formParams(['foo' => 'bar'])->postJson('/post'); $json = $client->json(['foo' => 'bar'])->putJson('/put'); $download = $client->saveTo('image.png')->get('/image/png'); $file = fopen('image.png', 'r'); $uploadBody = $client->body($file)->postJson('/post'); $multipart = [ 'foo' => 'bar', 'file' => $file, 'image' => [ 'contents' => fopen('image.png', 'r'), 'filename' => 'filename.png', ], ]; $formData = $client->multipart($multipart)->postJson('/post');
Async Requests
$promise = $client->json($data)->getAsync('/get'); $promise = $client->formParams($data)->postAsync('/post');
Applying Request Options
Using the option
method:
$client ->option('cert', $cert) ->option([ 'debug' => true, 'headers.Content-Type' => 'application/json', ]);
Or using camelCase
of any option name as a method on the client:
$client ->allowRedirects(false) ->timeout(20) ->cookies($cookieJar) ->headers([ 'X-Foo' => 'foo', ]);
In addition, you may use header
, accept
, acceptJson
, userAgent
or contentType
to set request headers:
$client ->header('X-Foo', 'foo'); ->header('X-Bar', 'bar'); ->acceptJson() ->contentType('text/plain') ->userAgent('HttpClient/2.0')
Global Default Request Options
The static setDefaultOptions
method can be used to configure default options for every new client instance:
HttpClient::setDefaultOptions([ 'catch_exceptions' => true, 'http_errors' => false, 'connect_timeout' => 5, 'timeout' => 20, 'headers.User-Agent' => 'HttpClient/2.0', ]);
Catching Guzzle Exceptions
The catchExceptions
method determines whether to catch Guzzle exceptions or not.
$response = $client->catchExceptions(true)->get('/api/path'); try { $response = $client->catchExceptions(false)->get('/api/path'); } catch (Exception $e) { // ... }
Testing
$ composer test
License
This package is open-sourced software licensed under the MIT License.