MiddlewareApplication.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. declare(strict_types=1);
  3. namespace TestApp\Http;
  4. use Cake\Http\BaseApplication;
  5. use Cake\Http\MiddlewareQueue;
  6. use Cake\Http\Response;
  7. use Psr\Http\Message\ResponseInterface;
  8. use Psr\Http\Message\ServerRequestInterface;
  9. class MiddlewareApplication extends BaseApplication
  10. {
  11. /**
  12. * @param \Cake\Http\MiddlewareQueue $middlewareQueue The middleware stack to set in your App Class
  13. * @return \Cake\Http\MiddlewareQueue
  14. */
  15. public function middleware(MiddlewareQueue $middlewareQueue): MiddlewareQueue
  16. {
  17. $middlewareQueue
  18. ->add(function ($request, $handler) {
  19. return $handler->handle($request)->withHeader('X-First', 'first');
  20. })
  21. ->add(function ($request, $handler) {
  22. return $handler->handle($request)->withHeader('X-Second', 'second');
  23. })
  24. ->add(function ($request, $handler) {
  25. $response = $handler->handle($request);
  26. if ($request->hasHeader('X-pass')) {
  27. $response = $response->withHeader('X-pass', $request->getHeaderLine('X-pass'));
  28. }
  29. return $response->withHeader('X-Second', 'second');
  30. });
  31. return $middlewareQueue;
  32. }
  33. /**
  34. * @param \Psr\Http\Message\ServerRequestInterface $request The request
  35. * @return \Psr\Http\Message\ResponseInterface
  36. */
  37. public function handle(ServerRequestInterface $req): ResponseInterface
  38. {
  39. $res = new Response(['status' => 200]);
  40. return $res->withHeader('X-testing', 'source header');
  41. }
  42. }