diff --git a/lib/download.php b/lib/download.php index 0c049d04..eaa0e312 100644 --- a/lib/download.php +++ b/lib/download.php @@ -12,12 +12,26 @@ namespace OCA\Office; class Download { + + /** + * Filesystem view + * @var \OC\Files\View + */ protected $view; - // File to be served + + /** + * Path to the File to be served, relative to the view + * @var string + */ protected $filepath; protected $instance; + /** + * Build download model according to the headers + * @param type $view - filesystem view + * @param type $filepath - path to the file relative to this view root + */ public function __construct($view, $filepath){ $this->filepath = $filepath; $this->view = $view; @@ -29,6 +43,9 @@ class Download { } } + /** + * Send the requested content + */ public function sendResponse(){ \OCP\Response::disableCaching(); @@ -40,22 +57,40 @@ class Download { exit(); } + /** + * Get the name of the requested file + * @return String + */ protected function getFilename(){ return basename($this->filepath); } + /** + * Get the size of the requested file + */ protected function getFilesize(){ return $this->view->filesize($this->filepath); } + /** + * Get the mimetype of the requested file + * @return string + */ protected function getMimeType(){ return $this->view->getMimeType($this->filepath); } + /** + * Check if the requested file exists + * @return bool + */ protected function fileExists(){ return $this->view->file_exists($this->filepath); } + /** + * Send 404 Response + */ protected function sendNotFound(){ header("HTTP/1.0 404 Not Found"); $tmpl = new OCP\Template('', '404', 'guest'); diff --git a/lib/download/range.php b/lib/download/range.php index 6016e7bc..a23591f8 100644 --- a/lib/download/range.php +++ b/lib/download/range.php @@ -18,11 +18,19 @@ class Range extends \OCA\Office\Download { // End of the range protected $end; + /** + * Build download model to serve HTTP_RANGE + * @param type $view - filesystem view + * @param type $filepath - path to the file relative to this view root + */ public function __construct($view, $filepath){ $this->view = $view; $this->filepath = $filepath; } + /** + * Send the requested parts of the file + */ public function sendResponse(){ if (!preg_match('/^bytes=\d*-\d*(,\d*-\d*)*$/', $_SERVER['HTTP_RANGE'])){ $this->sendNotSatisfiable(); @@ -57,6 +65,9 @@ class Range extends \OCA\Office\Download { } } + /** + * Send 416 if we can't satisfy the requested ranges + */ protected function sendNotSatisfiable(){ header('HTTP/1.1 416 Requested Range Not Satisfiable'); header('Content-Range: bytes */' . $this->getFilesize()); // Required in 416. diff --git a/lib/download/simple.php b/lib/download/simple.php index 4d7d6414..fa540dac 100644 --- a/lib/download/simple.php +++ b/lib/download/simple.php @@ -10,15 +10,18 @@ */ namespace OCA\Office\Download; -use OCA\Office\View; class Simple extends \OCA\Office\Download { + public function __construct($view, $filepath){ $this->view = $view; $this->filepath = $filepath; } + /** + * Send the whole file content as a response + */ public function sendResponse(){ header( 'Content-Type:' . $this->getMimeType() );