From c5a82467429e5e09b740009d19758a3df38a7f4d Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Tue, 23 Feb 2021 17:32:23 +0100 Subject: [PATCH] use mimetype from cache for workflow if available Signed-off-by: Robin Appelman --- apps/workflowengine/lib/Check/FileMimeType.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/apps/workflowengine/lib/Check/FileMimeType.php b/apps/workflowengine/lib/Check/FileMimeType.php index 42b93bd9513..8213010af05 100644 --- a/apps/workflowengine/lib/Check/FileMimeType.php +++ b/apps/workflowengine/lib/Check/FileMimeType.php @@ -26,6 +26,7 @@ */ namespace OCA\WorkflowEngine\Check; +use OC\Files\Storage\Local; use OCA\WorkflowEngine\Entity\File; use OCP\Files\IMimeTypeDetector; use OCP\Files\Storage\IStorage; @@ -122,12 +123,15 @@ class FileMimeType extends AbstractStringCheck implements IFileCheck { if ($this->mimeType[$this->storage->getId()][$this->path] !== null) { return $this->mimeType[$this->storage->getId()][$this->path]; } - - if ($this->storage->is_dir($this->path)) { - return $this->cacheAndReturnMimeType($this->storage->getId(), $this->path, 'httpd/unix-directory'); + $cacheEntry = $this->storage->getCache()->get($this->path); + if ($cacheEntry && $cacheEntry->getMimeType() !== 'application/octet-stream') { + return $this->cacheAndReturnMimeType($this->storage->getId(), $this->path, $cacheEntry->getMimeType()); } - if ($this->storage->file_exists($this->path) && $this->storage->filesize($this->path)) { + if ($this->storage->file_exists($this->path) && + $this->storage->filesize($this->path) && + $this->storage->instanceOfStorage(Local::class) + ) { $path = $this->storage->getLocalFile($this->path); $mimeType = $this->mimeTypeDetector->detectContent($path); return $this->cacheAndReturnMimeType($this->storage->getId(), $this->path, $mimeType);