RequestHandlerEvent.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. /**
  3. * @package Grav\Common\Processors
  4. *
  5. * @copyright Copyright (c) 2015 - 2023 Trilby Media, LLC. All rights reserved.
  6. * @license MIT License; see LICENSE file for details.
  7. */
  8. namespace Grav\Common\Processors\Events;
  9. use Grav\Framework\RequestHandler\RequestHandler;
  10. use Grav\Framework\Route\Route;
  11. use Psr\Http\Message\ResponseInterface;
  12. use Psr\Http\Message\ServerRequestInterface;
  13. use Psr\Http\Server\MiddlewareInterface;
  14. use RocketTheme\Toolbox\Event\Event;
  15. /**
  16. * Class RequestHandlerEvent
  17. * @package Grav\Common\Processors\Events
  18. */
  19. class RequestHandlerEvent extends Event
  20. {
  21. /**
  22. * @return ServerRequestInterface
  23. */
  24. public function getRequest(): ServerRequestInterface
  25. {
  26. return $this->offsetGet('request');
  27. }
  28. /**
  29. * @return Route
  30. */
  31. public function getRoute(): Route
  32. {
  33. return $this->getRequest()->getAttribute('route');
  34. }
  35. /**
  36. * @return RequestHandler
  37. */
  38. public function getHandler(): RequestHandler
  39. {
  40. return $this->offsetGet('handler');
  41. }
  42. /**
  43. * @return ResponseInterface|null
  44. */
  45. public function getResponse(): ?ResponseInterface
  46. {
  47. return $this->offsetGet('response');
  48. }
  49. /**
  50. * @param ResponseInterface $response
  51. * @return $this
  52. */
  53. public function setResponse(ResponseInterface $response): self
  54. {
  55. $this->offsetSet('response', $response);
  56. $this->stopPropagation();
  57. return $this;
  58. }
  59. /**
  60. * @param string $name
  61. * @param MiddlewareInterface $middleware
  62. * @return RequestHandlerEvent
  63. */
  64. public function addMiddleware(string $name, MiddlewareInterface $middleware): self
  65. {
  66. /** @var RequestHandler $handler */
  67. $handler = $this['handler'];
  68. $handler->addMiddleware($name, $middleware);
  69. return $this;
  70. }
  71. }