decodelabs/hydro

Simple PSR18 HTTP client wrapper around Guzzle

v0.1.5 2024-08-22 01:33 UTC

This package is auto-updated.

Last update: 2024-12-04 22:01:32 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.

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.