Skip to content

💣 EXPERIMENTAL – support for PSR-15 Middlewares 💣

License

Notifications You must be signed in to change notification settings

cormy/green-onion

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cormy\Server\GreenOnion Build Status Coverage Status Scrutinizer Code Quality

SensioLabsInsight

Cormy GreenOnion PSR-7+PSR-15 middleware stack.

💣 EXPERIMENTAL – Work in Progress 💣

💣 EXPERIMENTAL – support fore PSR-15 Middlewares 💣

Install

composer require cormy/green-onion

Usage

use Cormy\Server\GreenOnion;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Interop\Http\Middleware\DelegateInterface;
use Interop\Http\Middleware\ServerMiddlewareInterface;

// create the core of the onion, i.e. the innermost request handler
$core = function (ServerRequestInterface $request) : ResponseInterface {
    return new \Zend\Diactoros\Response();
};

// create some scales (aka middlewares) to wrap around the core
$scales = [];

$scales[] = new class implements ServerMiddlewareInterface {
    function process(ServerRequestInterface $request, DelegateInterface $delegate) : ResponseInterface {
        // delegate $request to the next request handler, i.e. $core
        $response = $delegate->process($request);

        return $response->withHeader('content-type', 'application/json; charset=utf-8');
    }
};

$scales[] = function (ServerRequestInterface $request) : \Generator {
    // delegate $request to the next request handler, i.e. the middleware right above
    $response = (yield $request);

    return $response->withHeader('X-PoweredBy', 'Unicorns');
};

// create an onion style middleware stack
$middlewareStack = new GreenOnion($core, ...$scales);

// and process an incoming server request
$response = $middlewareStack(new \Zend\Diactoros\ServerRequest());

API

Cormy\Server\GreenOnion implements Cormy\Server\RequestHandlerInterface

GreenOnion::__construct

/**
 * Constructs a GreenOnion PSR-7+PSR-15 middleware stack.
 *
 * @param RequestHandlerInterface|DelegateInterface|callable                                                   $core   the innermost request handler
 * @param (MiddlewareInterface|ServerMiddlewareInterface|DelegateInterface|RequestHandlerInterface|callable)[] $scales the middlewares to wrap around the core
 */
public function __construct($core, ...$scales)
/**
 * Process an incoming server request and return the response.
 *
 * @param ServerRequestInterface $request
 *
 * @return ResponseInterface
 */
public function __invoke(ServerRequestInterface $request):ResponseInterface

Related

License

MIT © Michael Mayer

About

💣 EXPERIMENTAL – support for PSR-15 Middlewares 💣

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages