HeaderManager.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\App\Response;
  7. use Magento\Framework\App\Response\HeaderProvider\HeaderProviderInterface;
  8. use Magento\Framework\Exception\LocalizedException;
  9. use Magento\Framework\Phrase;
  10. class HeaderManager
  11. {
  12. /**
  13. * @var HeaderProviderInterface[]
  14. */
  15. private $headerProviders;
  16. /**
  17. * @param HeaderProviderInterface[] $headerProviderList
  18. * @throws LocalizedException In case one of the header providers is invalid
  19. */
  20. public function __construct($headerProviderList)
  21. {
  22. foreach ($headerProviderList as $header) {
  23. if (!($header instanceof HeaderProviderInterface)) {
  24. throw new LocalizedException(new Phrase('The header provider is invalid. Verify and try again.'));
  25. }
  26. }
  27. $this->headerProviders = $headerProviderList;
  28. }
  29. /**
  30. * @param \Magento\Framework\App\Response\Http $subject
  31. * @return void
  32. * @codeCoverageIgnore
  33. */
  34. public function beforeSendResponse(\Magento\Framework\App\Response\Http $subject)
  35. {
  36. foreach ($this->headerProviders as $provider) {
  37. if ($provider->canApply()) {
  38. $subject->setHeader($provider->getName(), $provider->getValue());
  39. }
  40. }
  41. }
  42. }