Hydro provides a simple interface to common HTTP client functionality using Guzzle under the hood.
This package requires PHP 8.4 or higher.
Install via Composer:
composer require decodelabs/hydroBasic usage for different types of files:
use DecodeLabs\Hydro;
use DecodeLabs\Monarch;
$hydro = Monarch::getService(Hydro::class);
$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/TreePass an array of options (including URL) to the underlying client:
$hydro->get([
'url' => 'https://example.com/file.txt',
'timeout' => 10
]);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');
}
});Hydro is licensed under the proprietary License. See LICENSE for the full license text.