Mercurial > hg > isophonics-drupal-site
diff vendor/stack/builder/src/Stack/StackedHttpKernel.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/stack/builder/src/Stack/StackedHttpKernel.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,37 @@ +<?php + +namespace Stack; + +use Symfony\Component\HttpKernel\HttpKernelInterface; +use Symfony\Component\HttpKernel\TerminableInterface; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; + +class StackedHttpKernel implements HttpKernelInterface, TerminableInterface +{ + private $app; + private $middlewares = array(); + + public function __construct(HttpKernelInterface $app, array $middlewares) + { + $this->app = $app; + $this->middlewares = $middlewares; + } + + public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true) + { + return $this->app->handle($request, $type, $catch); + } + + public function terminate(Request $request, Response $response) + { + $prevKernel = null; + foreach ($this->middlewares as $kernel) { + // if prev kernel was terminable we can assume this middleware has already been called + if (!$prevKernel instanceof TerminableInterface && $kernel instanceof TerminableInterface) { + $kernel->terminate($request, $response); + } + $prevKernel = $kernel; + } + } +}