chubbyphp / chubbyphp-negotiation
Chubbyphp Negotiation
Installs: 89 512
Dependents: 2
Suggesters: 0
Security: 0
Stars: 2
Watchers: 2
Forks: 2
Open Issues: 0
Requires
- php: ^8.2
- psr/http-message: ^1.1|^2.0
Requires (Dev)
- chubbyphp/chubbyphp-container: ^2.2
- chubbyphp/chubbyphp-dev-helper: dev-master
- chubbyphp/chubbyphp-http-exception: ^1.1
- chubbyphp/chubbyphp-laminas-config-factory: ^1.3
- chubbyphp/chubbyphp-mock: ^1.8
- infection/infection: ^0.29.8
- php-coveralls/php-coveralls: ^2.7.0
- phpstan/extension-installer: ^1.4.3
- phpstan/phpstan: ^2.0.3
- phpunit/phpunit: ^11.5.0
- pimple/pimple: ^3.5
- psr/http-server-middleware: ^1.0.2
Conflicts
- chubbyphp/chubbyphp-container: <2.2 || >=3.0
- chubbyphp/chubbyphp-http-exception: <1.1 || >=2.0
- chubbyphp/chubbyphp-laminas-config-factory: <1.3 || >=2.0
- pimple/pimple: <3.5 || >=4.0
- psr/http-server-middleware: <1.0|| >=2.0
README
Description
A simple negotiation library.
Requirements
- php: ^8.2
- psr/http-message: ^1.1|^2.0
Suggest
- chubbyphp/chubbyphp-container: ^2.2
- chubbyphp/chubbyphp-http-exception: ^1.1
- chubbyphp/chubbyphp-laminas-config-factory: ^1.3
- pimple/pimple: ^3.5
- psr/http-server-middleware: ^1.0.2
Installation
Through Composer as chubbyphp/chubbyphp-negotiation.
composer require chubbyphp/chubbyphp-negotiation "^2.2"
Usage
AcceptLanguageNegotiator
<?php use Chubbyphp\Negotiation\AcceptLanguageNegotiator; $request = ...; $request->withHeader('Accept-Language', 'de,en-US;q=0.7,en;q=0.3'); $negotiator = new AcceptLanguageNegotiator(['en', 'de']); $value = $negotiator->negotiate($request); // NegotiatedValue $value->getValue(); // de $value->getAttributes(); // ['q' => '1.0']
AcceptLanguageMiddleware
<?php use Chubbyphp\Negotiation\Middleware\AcceptLanguageMiddleware; $request = ...; $request->withHeader('Accept-Language', 'de,en-US;q=0.7,en;q=0.3'); $middleware = new AcceptLanguageMiddleware($acceptLanguageNegotiator); $response = $negotiator->process($request, $handler);
AcceptNegotiator
<?php use Chubbyphp\Negotiation\AcceptNegotiator; $request = ...; $request->withHeader('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q =0.8'); $negotiator = new AcceptNegotiator(['application/json', 'application/xml', 'application/x-yaml']); $value = $negotiator->negotiate($request); // NegotiatedValue $value->getValue(); // application/xml $value->getAttributes(); // ['q' => '0.9']
AcceptMiddleware
<?php use Chubbyphp\Negotiation\Middleware\AcceptMiddleware; $request = ...; $request->withHeader('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q =0.8'); $middleware = new AcceptMiddleware($acceptNegotiator); $response = $negotiator->process($request, $handler);
ContentTypeNegotiator
<?php use Chubbyphp\Negotiation\ContentTypeNegotiator; $request = ...; $request->withHeader('Content-Type', 'application/xml; charset=UTF-8'); $negotiator = new ContentTypeNegotiator(['application/json', 'application/xml', 'application/x-yaml']); $value = $negotiator->negotiate($request); // NegotiatedValue $value->getValue(); // application/xml $value->getAttributes(); // ['charset' => 'UTF-8']
ContentTypeMiddleware
<?php use Chubbyphp\Negotiation\Middleware\ContentTypeMiddleware; $request = ...; $request->withHeader('Content-Type', 'application/xml; charset=UTF-8'); $middleware = new ContentTypeMiddleware($contentTypeNegotiator); $response = $negotiator->process($request, $handler);
NegotiationServiceFactory
<?php use Chubbyphp\Container\Container; use Chubbyphp\Negotiation\ServiceFactory\NegotiationServiceFactory; use Psr\Http\Message\ServerRequestInterface; $container = new Container(); $container->factories((new NegotiationServiceFactory())()); $request = ...; $container->get('negotiator.acceptNegotiator') ->negotiate($request); $container->get('negotiator.acceptMiddleware') ->process($request, $handler); $container->get('negotiator.acceptLanguageNegotiator') ->negotiate($request); $container->get('negotiator.acceptLanguageMiddleware') ->process($request, $handler); $container->get('negotiator.contentTypeNegotiator') ->negotiate($request); $container->get('negotiator.contentTypeMiddleware') ->process($request, $handler);
NegotiationServiceProvider
<?php use Chubbyphp\Negotiation\ServiceProvider\NegotiationServiceProvider; use Pimple\Container; use Psr\Http\Message\ServerRequestInterface; $container = new Container(); $container->register(new NegotiationServiceProvider); $request = ...; $container['negotiator.acceptNegotiator'] ->negotiate($request); $container['negotiator.acceptMiddleware'] ->process($request, $handler); $container['negotiator.acceptLanguageNegotiator'] ->negotiate($request); $container['negotiator.acceptLanguageMiddleware'] ->process($request, $handler); $container['negotiator.contentTypeNegotiator'] ->negotiate($request); $container['negotiator.contentTypeMiddleware'] ->process($request, $handler);
ServiceFactory
- AcceptLanguageMiddlewareFactory
- AcceptLanguageNegotiatorFactory
- AcceptMiddlewareFactory
- AcceptNegotiatorFactory
- ContentTypeMiddlewareFactory
- ContentTypeNegotiatorFactory
Copyright
2024 Dominik Zogg