From 6a385dd20bad8d0e6c7d923f77eea7b5f719fddd Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Fri, 13 Apr 2018 17:40:52 +0200 Subject: Add directDownload support of storage Signed-off-by: Roeland Jago Douma --- apps/dav/lib/Controller/DirectController.php | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) (limited to 'apps/dav/lib/Controller') diff --git a/apps/dav/lib/Controller/DirectController.php b/apps/dav/lib/Controller/DirectController.php index c357771f3ff..3b8b0d1e2a6 100644 --- a/apps/dav/lib/Controller/DirectController.php +++ b/apps/dav/lib/Controller/DirectController.php @@ -87,23 +87,28 @@ class DirectController extends OCSController { } $file = array_shift($files); + $storage = $file->getStorage(); + $directDownload = $storage->getDirectDownload($file->getInternalPath()); - //TODO: try to get a url from the backend (like S3) + if (isset($directDownload['url'])) { + $url = $directDownload['url']; + } else { + // Fallback to our default implemenation + $direct = new Direct(); + $direct->setUserId($this->userId); + $direct->setFileId($fileId); + $token = $this->random->generate(60, ISecureRandom::CHAR_UPPER . ISecureRandom::CHAR_LOWER . ISecureRandom::CHAR_DIGITS); + $direct->setToken($token); + $direct->setExpiration($this->timeFactory->getTime() + 60 * 60 * 8); - // Fallback to our default implemenation - $direct = new Direct(); - $direct->setUserId($this->userId); - $direct->setFileId($fileId); + $this->mapper->insert($direct); - $token = $this->random->generate(60, ISecureRandom::CHAR_UPPER.ISecureRandom::CHAR_LOWER.ISecureRandom::CHAR_DIGITS); - $direct->setToken($token); - $direct->setExpiration($this->timeFactory->getTime() + 60*60*8); - - $this->mapper->insert($direct); + $url = $this->urlGenerator->getAbsoluteURL('remote.php/direct/'.$token); + } return new DataResponse([ - 'url' => $this->urlGenerator->getAbsoluteURL('remote.php/direct/'.$token) + 'url' => $url, ]); } } -- cgit v1.2.3