2017 © Pedro Peláez
 

library chubbyphp-negotiation

Chubbyphp Negotiation

image

chubbyphp/chubbyphp-negotiation

Chubbyphp Negotiation

  • Thursday, May 31, 2018
  • by dominikzogg
  • Repository
  • 0 Watchers
  • 0 Stars
  • 2,726 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 11 Versions
  • 24 % Grown

The README.md

chubbyphp-negotiation

CI Coverage Status Mutation testing badge Latest Stable Version Total Downloads Monthly Downloads, (*1)

bugs code_smells coverage duplicated_lines_density ncloc sqale_rating alert_status reliability_rating security_rating sqale_index vulnerabilities, (*2)

Description

A simple negotiation library., (*3)

Requirements

  • php: ^8.1
  • 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

Installation

Through Composer as chubbyphp/chubbyphp-negotiation., (*4)

composer require chubbyphp/chubbyphp-negotiation "^2.1"

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

2024 Dominik Zogg, (*5)

The Versions

31/05 2018

dev-master

9999999-dev

Chubbyphp Negotiation

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Zogg

negotiation chubbyphp

03/05 2018

1.2.4

1.2.4.0

Chubbyphp Negotiation

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Zogg

negotiation chubbyphp

03/05 2018

1.2.3

1.2.3.0

Chubbyphp Negotiation

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Zogg

negotiation chubbyphp

03/05 2018

1.2.2

1.2.2.0

Chubbyphp Negotiation

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Zogg

negotiation chubbyphp

11/12 2017

1.2.1

1.2.1.0

Chubbyphp Negotiation

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Zogg

negotiation chubbyphp

26/10 2017

1.2.0

1.2.0.0

Chubbyphp Negotiation

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Zogg

negotiation chubbyphp

26/10 2017

1.1.2

1.1.2.0

Chubbyphp Negotiation

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Zogg

negotiation chubbyphp

23/10 2017

1.1.1

1.1.1.0

Chubbyphp Negotiation

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Zogg

negotiation chubbyphp

05/09 2017

1.1.0

1.1.0.0

Chubbyphp Negotiation

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Zogg

negotiation chubbyphp

03/09 2017

1.0.0

1.0.0.0

Chubbyphp Negotiation

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Zogg

negotiation chubbyphp

03/09 2017

1.0-beta1

1.0.0.0-beta1

Chubbyphp Negotiation

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Zogg

negotiation chubbyphp