decodelabs/hydro

Simple PSR18 HTTP client wrapper around Guzzle

v0.2.0 2025-08-21 16:09 UTC

This package is auto-updated.

Last update: 2025-08-21 16:11:25 UTC


README

PHP from Packagist Latest Version Total Downloads GitHub Workflow Status PHPStan License

Simple HTTP client wrapper around Guzzle

Hydro provides a simple interface to common HTTP client functionality using Guzzle under the hood.

Installation

Install via Composer:

composer require decodelabs/hydro

Usage

Basic 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/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.