Response.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\MediaStorage\Model\File\Storage;
  7. use Magento\Framework\App\Response\Http;
  8. use Magento\Framework\App\Request\Http as HttpRequest;
  9. use Magento\Framework\Stdlib\Cookie\CookieMetadataFactory;
  10. use Magento\Framework\Stdlib\CookieManagerInterface;
  11. class Response extends Http implements
  12. \Magento\Framework\App\Response\FileInterface,
  13. \Magento\Framework\App\PageCache\NotCacheableInterface
  14. {
  15. /**
  16. * @var \Magento\Framework\File\Transfer\Adapter\Http
  17. */
  18. protected $_transferAdapter;
  19. /**
  20. * Full path to file
  21. *
  22. * @var string
  23. */
  24. protected $_filePath;
  25. /**
  26. * Constructor
  27. *
  28. * @param HttpRequest $request
  29. * @param CookieManagerInterface $cookieManager
  30. * @param CookieMetadataFactory $cookieMetadataFactory
  31. * @param \Magento\Framework\App\Http\Context $context
  32. * @param \Magento\Framework\Stdlib\DateTime $dateTime
  33. * @param \Magento\Framework\File\Transfer\Adapter\Http $transferAdapter
  34. */
  35. public function __construct(
  36. HttpRequest $request,
  37. CookieManagerInterface $cookieManager,
  38. CookieMetadataFactory $cookieMetadataFactory,
  39. \Magento\Framework\App\Http\Context $context,
  40. \Magento\Framework\Stdlib\DateTime $dateTime,
  41. \Magento\Framework\File\Transfer\Adapter\Http $transferAdapter
  42. ) {
  43. parent::__construct($request, $cookieManager, $cookieMetadataFactory, $context, $dateTime);
  44. $this->_transferAdapter = $transferAdapter;
  45. }
  46. /**
  47. * Send response
  48. *
  49. * @return void
  50. */
  51. public function sendResponse()
  52. {
  53. if ($this->_filePath && $this->getHttpResponseCode() == 200) {
  54. $options = [
  55. 'filepath' => $this->_filePath,
  56. 'headers' => $this->getHeaders(),
  57. ];
  58. $this->_transferAdapter->send($options);
  59. } else {
  60. parent::sendResponse();
  61. }
  62. }
  63. /**
  64. * @param string $path
  65. * @return void
  66. */
  67. public function setFilePath($path)
  68. {
  69. $this->_filePath = $path;
  70. }
  71. }