proteins/negotiation

A module for handling Content Negotiation

1.0.3 2019-05-28 14:29 UTC

This package is auto-updated.

Last update: 2024-10-29 05:46:52 UTC


README

Protein | Negotiation

A module for handling Content Negotiation.

See Reference : RFC 7231

Install

composer require proteins/negotiation

Require the class via :

use Proteins\Negotiation;

Get best match between need and offerings

Note: You can use * as wildcards for matching a family of choices.

$need  = 'image/*;q=0.9,*/*;q=0.2';
$offer = 'text/html,svg/xml,image/svg+xml';
echo Negotiation::bestMatch($need,$offer);
image/svg+xml

Preferred and best match

Negotiation class automatically orders by priority based on q parameter.

$negotiatior = new Negotiation('en-US;q=0.3,it,en;q=0.4,es;q=0.9,de');

You can obtain the preferred response via the preferred method.

echo $negotiatior->preferred();
it

Or get the best match against another RFC7231 query

echo $negotiatior->best('es,en-US');
es

false will be returned if no match can be found.