MiddlewareApplication.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. */
  14. public function middleware(MiddlewareQueue $middlewareQueue): MiddlewareQueue
  15. {
  16. $middlewareQueue
  17. ->add(function ($request, $handler) {
  18. return $handler->handle($request)->withHeader('X-First', 'first');
  19. })
  20. ->add(function ($request, $handler) {
  21. return $handler->handle($request)->withHeader('X-Second', 'second');
  22. })
  23. ->add(function ($request, $handler) {
  24. $response = $handler->handle($request);
  25. if ($request->hasHeader('X-pass')) {
  26. $response = $response->withHeader('X-pass', $request->getHeaderLine('X-pass'));
  27. }
  28. return $response->withHeader('X-Second', 'second');
  29. });
  30. return $middlewareQueue;
  31. }
  32. /**
  33. * @param \Psr\Http\Message\ServerRequestInterface $request The request
  34. */
  35. public function handle(ServerRequestInterface $request): ResponseInterface
  36. {
  37. $res = new Response(['status' => 200]);
  38. return $res->withHeader('X-testing', 'source header');
  39. }
  40. }