summaryrefslogtreecommitdiffstats
path: root/apps/files_versions/lib/Sabre/VersionFile.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_versions/lib/Sabre/VersionFile.php')
-rw-r--r--apps/files_versions/lib/Sabre/VersionFile.php22
1 files changed, 19 insertions, 3 deletions
diff --git a/apps/files_versions/lib/Sabre/VersionFile.php b/apps/files_versions/lib/Sabre/VersionFile.php
index b84215cb3d6..347058448fc 100644
--- a/apps/files_versions/lib/Sabre/VersionFile.php
+++ b/apps/files_versions/lib/Sabre/VersionFile.php
@@ -24,16 +24,23 @@ declare(strict_types=1);
namespace OCA\Files_Versions\Sabre;
use OCA\Files_Versions\Storage;
-use OCP\Files\FileInfo;
+use OCP\Files\File;
+use OCP\Files\Folder;
+use OCP\Files\NotFoundException;
use Sabre\DAV\Exception\Forbidden;
+use Sabre\DAV\Exception\NotFound;
use Sabre\DAV\IFile;
class VersionFile implements IFile {
/** @var array */
private $data;
- public function __construct(array $data) {
+ /** @var Folder */
+ private $userRoot;
+
+ public function __construct(array $data, Folder $userRoot) {
$this->data = $data;
+ $this->userRoot = $userRoot;
}
public function put($data) {
@@ -41,7 +48,16 @@ class VersionFile implements IFile {
}
public function get() {
- throw new Forbidden();
+ try {
+ /** @var Folder $versions */
+ $versions = $this->userRoot->get('files_versions');
+ /** @var File $version */
+ $version = $versions->get($this->data['path'].'.v'.$this->data['version']);
+ } catch (NotFoundException $e) {
+ throw new NotFound();
+ }
+
+ return $version->fopen('rb');
}
public function getContentType(): string {