|
3 | 3 | namespace Radvance; |
4 | 4 |
|
5 | 5 | use Nyholm\Psr7\Factory\Psr17Factory; |
| 6 | +use OpenAPIValidation\Schema\Validator; |
6 | 7 | use Silex\Application; |
7 | 8 | use Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory; |
8 | 9 | use Symfony\Bridge\PsrHttpMessage\Factory\PsrHttpFactory; |
|
14 | 15 |
|
15 | 16 | class Runner |
16 | 17 | { |
| 18 | + public const MIDDLEWARE_SERVICES_LIST_ID = 'middleware_services'; |
| 19 | + |
17 | 20 | /** |
18 | 21 | * @param HttpKernelInterface|Application $app |
19 | 22 | * @param Request|null $request |
20 | 23 | */ |
21 | | - static function run(HttpKernelInterface $app, Request $request = null) |
| 24 | + static function run(HttpKernelInterface $application, Request $request = null) |
22 | 25 | { |
23 | | - $flexMiddlewaresYaml = null; |
| 26 | + $stack = $application->getStack(); |
| 27 | + $app = $stack->resolve($application); |
24 | 28 |
|
25 | | - if ($app instanceof Application) { |
26 | | - $flexMiddlewaresYaml = isset($app['flex_middlewares.config']) ? |
27 | | - $app['flex_middlewares.config'] : |
28 | | - realpath('../') . DIRECTORY_SEPARATOR . 'middlewares.yaml'; |
29 | | - } |
30 | | - |
31 | | - $stack = $app->getStack(); |
32 | | - $app = $stack->resolve($app); |
33 | | - |
34 | 29 | $request = $request ?: Request::createFromGlobals(); |
35 | 30 | $middlewarePipe = new \Zend\Stratigility\MiddlewarePipe(); |
36 | 31 |
|
37 | 32 | $psr17Factory = new Psr17Factory(); |
38 | 33 | $psrHttpFactory = new PsrHttpFactory($psr17Factory, $psr17Factory, $psr17Factory, $psr17Factory); |
39 | 34 | $psrRequest = $psrHttpFactory->createRequest($request); |
40 | 35 |
|
41 | | - if (is_file($flexMiddlewaresYaml)) { |
42 | | - $middlewarePipe->pipe(FlexMiddlewareFactory::fromConfig($flexMiddlewaresYaml)); |
| 36 | + if ($application instanceof Application) { |
| 37 | + $flexMiddlewaresYaml = isset($application['flex_middlewares.config']) ? |
| 38 | + $application['flex_middlewares.config'] : |
| 39 | + realpath('../') . DIRECTORY_SEPARATOR . 'middlewares.yaml'; |
| 40 | + |
| 41 | + if (is_file($flexMiddlewaresYaml)) { |
| 42 | + $middlewarePipe->pipe(FlexMiddlewareFactory::fromConfig($flexMiddlewaresYaml)); |
| 43 | + } |
| 44 | + |
| 45 | + if (isset($application[self::MIDDLEWARE_SERVICES_LIST_ID])) { |
| 46 | + foreach ($application[self::MIDDLEWARE_SERVICES_LIST_ID] as $middlewareServiceID) { |
| 47 | + if (!isset($application[$middlewareServiceID])) { |
| 48 | + throw new \InvalidArgumentException("No $middlewareServiceID middleware service"); |
| 49 | + } |
| 50 | + |
| 51 | + $middlewarePipe->pipe($application[$middlewareServiceID]); |
| 52 | + } |
| 53 | + } |
43 | 54 | } |
44 | 55 |
|
45 | 56 | $middlewarePipe->pipe(new HttpKernelMiddleware($app)); |
|
0 commit comments