decodelabs / hydro
Simple PSR18 HTTP client wrapper around Guzzle
v0.1.7
2025-02-20 14:27 UTC
Requires
- php: ^8.4
- decodelabs/atlas: ^0.12.4
- decodelabs/coercion: ^0.3
- decodelabs/exceptional: ^0.5.3
- decodelabs/veneer: ^0.12.6
- guzzlehttp/guzzle: ^7.9.2
- psr/http-client: ^1.0.3
- psr/http-message: ^2.0
Requires (Dev)
- decodelabs/collections: ^0.10.6
- decodelabs/phpstan-decodelabs: ^0.7
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( message: 'File not found' ); case 500: throw Exceptional::Runtime( message: '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.