Avoid code duplication in PR #2891
This commit is contained in:
@@ -15,11 +15,11 @@ class FileViewerController extends BaseController
|
||||
/**
|
||||
* Get file content from object storage
|
||||
*
|
||||
* @access private
|
||||
* @access protected
|
||||
* @param array $file
|
||||
* @return string
|
||||
*/
|
||||
private function getFileContent(array $file)
|
||||
protected function getFileContent(array $file)
|
||||
{
|
||||
$content = '';
|
||||
|
||||
@@ -34,6 +34,30 @@ class FileViewerController extends BaseController
|
||||
return $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Output file with cache
|
||||
*
|
||||
* @param array $file
|
||||
* @param $mimetype
|
||||
*/
|
||||
protected function renderFileWithCache(array $file, $mimetype)
|
||||
{
|
||||
$etag = md5($file['path']);
|
||||
|
||||
if ($this->request->getHeader('If-None-Match') === '"'.$etag.'"') {
|
||||
$this->response->status(304);
|
||||
} else {
|
||||
try {
|
||||
$this->response->withContentType($mimetype);
|
||||
$this->response->withCache(5 * 86400, $etag);
|
||||
$this->response->send();
|
||||
$this->objectStorage->output($file['path']);
|
||||
} catch (ObjectStorageException $e) {
|
||||
$this->logger->error($e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Show file content in a popover
|
||||
*
|
||||
@@ -65,21 +89,7 @@ class FileViewerController extends BaseController
|
||||
public function image()
|
||||
{
|
||||
$file = $this->getFile();
|
||||
$etag = md5($file['path']);
|
||||
$this->response->withContentType($this->helper->file->getImageMimeType($file['name']));
|
||||
$this->response->withCache(5 * 86400, $etag);
|
||||
|
||||
if ($this->request->getHeader('If-None-Match') === '"'.$etag.'"') {
|
||||
$this->response->status(304);
|
||||
} else {
|
||||
|
||||
try {
|
||||
$this->response->send();
|
||||
$this->objectStorage->output($file['path']);
|
||||
} catch (ObjectStorageException $e) {
|
||||
$this->logger->error($e->getMessage());
|
||||
}
|
||||
}
|
||||
$this->renderFileWithCache($file, $this->helper->file->getImageMimeType($file['name']));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -90,21 +100,7 @@ class FileViewerController extends BaseController
|
||||
public function browser()
|
||||
{
|
||||
$file = $this->getFile();
|
||||
$etag = md5($file['path']);
|
||||
$this->response->withContentType($this->helper->file->getBrowserViewType($file['name']));
|
||||
$this->response->withCache(5 * 86400, $etag);
|
||||
|
||||
if ($this->request->getHeader('If-None-Match') === '"'.$etag.'"') {
|
||||
$this->response->status(304);
|
||||
} else {
|
||||
|
||||
try {
|
||||
$this->response->send();
|
||||
$this->objectStorage->output($file['path']);
|
||||
} catch (ObjectStorageException $e) {
|
||||
$this->logger->error($e->getMessage());
|
||||
}
|
||||
}
|
||||
$this->renderFileWithCache($file, $this->helper->file->getBrowserViewType($file['name']));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user