jsor/http-client-hints

Utilities for working with HTTP Client Hints.

v1.0.0 2018-09-05 06:55 UTC

This package is auto-updated.

Last update: 2024-10-07 00:19:55 UTC


README

Build Status Coverage Status

Utilities for working with HTTP Client Hints.

Installation

Install the latest version with Composer.

composer require jsor/http-client-hints

Check the Packagist page for all available versions.

Example

$resolved = (new Jsor\HttpClientHints\Resolver())
    ->withAllowedHeaders([
        // Process only Width and DPR headers
        'Width',
        'DPR',
    ])
    ->withMapping([
        // Map Width header to w key
        'width'  => 'w',
        // Needed to extract the height from the query params
        // for recalculation depending on Width if present
        'height' => 'h',
    ])
    ->resolve($_SERVER, $_GET)
;

if (isset($resolved['dpr'])) {
    header('Content-DPR: ' . $resolved['dpr']);
    header('Vary: DPR', false);
}

if (isset($resolved['w'])) {
    header('Vary: Width', false);
}

// Use $resolved to generate thumbnails.
// If you use Glide (https://github.com/thephpleague/glide), this could look
// something like:

$server = League\Glide\ServerFactory::create([
    'source' => 'path/to/source/folder',
    'cache' => 'path/to/cache/folder',
]);
$server->outputImage($path, array_merge($_GET, $resolved));

License

Copyright (c) 2016-2018 Jan Sorgalla. Released under the MIT License.