decodelabs / hydro
Simple PSR18 HTTP client wrapper around Guzzle
v0.1.5
2024-08-22 01:33 UTC
Requires
- php: ^8.1
- decodelabs/atlas: ^0.12
- decodelabs/coercion: ^0.2.7
- decodelabs/exceptional: ^0.4.4
- decodelabs/veneer: ^0.11.6
- guzzlehttp/guzzle: ^7.0
- psr/http-client: ^1.0
- psr/http-message: ^2.0
Requires (Dev)
- decodelabs/collections: ^0.9
- decodelabs/phpstan-decodelabs: ^0.6.6
Suggests
- decodelabs/collections: Fetch JSON files over HTTP as Tree
README
Simple HTTP client wrapper around Guzzle
Hydro provides a simple interface to common HTTP client functionality using Guzzle under the hood.
Get news and updates on the DecodeLabs blog.
Installation
Install via Composer:
composer require decodelabs/hydro
Usage
Basic usage for different types of files:
use DecodeLabs\Hydro; $memoryFile = Hydro::get('https://example.com/file.txt'); // Atlas file $string = Hydro::getString('https://example.com/file.txt'); // String $file = Hydro::getFile('https://example.com/file.txt', '/path/to/save/file.txt'); // Local file $tempFile = Hydro::getTempFile('https://example.com/file.txt'); // Temp file $json = Hydro::getJson('https://example.com/file.json'); // Decoded JSON array $tree = Hydro::getJsonTree('https://example.com/file.json'); // Decoded JSON Collections/Tree
Options
Pass an array of options (including URL) to the underlying client:
Hydro::get([ 'url' => 'https://example.com/file.txt', 'timeout' => 10 ]);
Errors
Handle error status responses (or return alternative response):
$file = Hydro::get('https://example.com/file.txt', function($response) { switch($response->getStatusCode()) { case 404: throw Exceptional::Notfound('File not found'); case 500: throw Exceptional::Runtime('Server error'); default: return Hydro::request('GET', 'https://example.com/other.txt'); } });
Licensing
Hydro is licensed under the proprietary License. See LICENSE for the full license text.