|
|
@@ -24,6 +24,7 @@ |
|
|
|
namespace OC\Core\Controller; |
|
|
|
|
|
|
|
use OCP\AppFramework\Controller; |
|
|
|
use OCP\AppFramework\Utility\ITimeFactory; |
|
|
|
use OCP\Files\File; |
|
|
|
use OCP\AppFramework\Http; |
|
|
|
use OCP\AppFramework\Http\DataResponse; |
|
|
@@ -44,6 +45,9 @@ class PreviewController extends Controller { |
|
|
|
/** @var IPreview */ |
|
|
|
private $preview; |
|
|
|
|
|
|
|
/** @var ITimeFactory */ |
|
|
|
private $timeFactory; |
|
|
|
|
|
|
|
/** |
|
|
|
* PreviewController constructor. |
|
|
|
* |
|
|
@@ -57,13 +61,15 @@ class PreviewController extends Controller { |
|
|
|
IRequest $request, |
|
|
|
IPreview $preview, |
|
|
|
IRootFolder $root, |
|
|
|
$userId |
|
|
|
$userId, |
|
|
|
ITimeFactory $timeFactory |
|
|
|
) { |
|
|
|
parent::__construct($appName, $request); |
|
|
|
|
|
|
|
$this->preview = $preview; |
|
|
|
$this->root = $root; |
|
|
|
$this->userId = $userId; |
|
|
|
$this->timeFactory = $timeFactory; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@@ -105,7 +111,19 @@ class PreviewController extends Controller { |
|
|
|
|
|
|
|
try { |
|
|
|
$f = $this->preview->getPreview($file, $x, $y, !$a, $mode); |
|
|
|
return new FileDisplayResponse($f, Http::STATUS_OK, ['Content-Type' => $f->getMimeType()]); |
|
|
|
$response = new FileDisplayResponse($f, Http::STATUS_OK, ['Content-Type' => $f->getMimeType()]); |
|
|
|
|
|
|
|
// Let cache this! |
|
|
|
$response->addHeader('Pragma', 'public'); |
|
|
|
|
|
|
|
// Cache previews for 24H |
|
|
|
$response->cacheFor(3600 * 24); |
|
|
|
$expires = new \DateTime(); |
|
|
|
$expires->setTimestamp($this->timeFactory->getTime()); |
|
|
|
$expires->add(new \DateInterval('P1D')); |
|
|
|
$response->addHeader('Expires', $expires->format(\DateTime::RFC2822)); |
|
|
|
|
|
|
|
return $response; |
|
|
|
} catch (NotFoundException $e) { |
|
|
|
return new DataResponse([], Http::STATUS_NOT_FOUND); |
|
|
|
} |