Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/richdocuments.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/downloadresponse.php')
-rw-r--r--lib/downloadresponse.php123
1 files changed, 0 insertions, 123 deletions
diff --git a/lib/downloadresponse.php b/lib/downloadresponse.php
deleted file mode 100644
index 01115b30..00000000
--- a/lib/downloadresponse.php
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-/**
- * ownCloud - Richdocuments App
- *
- * @author Victor Dubiniuk
- * @copyright 2014 Victor Dubiniuk victor.dubiniuk@gmail.com
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- */
-
-namespace OCA\Richdocuments;
-
-use \OCP\AppFramework\Http;
-use \OCP\IRequest;
-use \OC\Files\View;
-
-class DownloadResponse extends \OCP\AppFramework\Http\Response {
- private $request;
- private $view;
- private $path;
-
- /**
- * @param IRequest $request
- * @param string $user
- * @param string $path
- */
- public function __construct(IRequest $request, $user, $path) {
- $this->request = $request;
- $this->user = $user;
- $this->path = $path;
-
- $this->view = new View('/' . $user);
- if (!$this->view->file_exists($path)){
- $this->setStatus(Http::STATUS_NOT_FOUND);
- }
- }
-
- public function render(){
- if ($this->getStatus() === Http::STATUS_NOT_FOUND){
- return '';
- }
- $info = $this->view->getFileInfo($this->path);
- $this->ETag = $info['etag'];
-
- $content = $this->view->file_get_contents($this->path);
- $data = \OCA\Richdocuments\Filter::read($content, $info['mimetype']);
- $size = strlen($data['content']);
-
-
- if (isset($this->request->server['HTTP_RANGE']) && !is_null($this->request->server['HTTP_RANGE'])){
- $isValidRange = preg_match('/^bytes=\d*-\d*(,\d*-\d*)*$/', $this->request->server['HTTP_RANGE']);
- if (!$isValidRange){
- return $this->sendRangeNotSatisfiable($size);
- }
-
- $ranges = explode(',', substr($this->request->server['HTTP_RANGE'], 6));
- foreach ($ranges as $range){
- $parts = explode('-', $range);
-
- if ($parts[0]==='' && $parts[1]=='') {
- $this->sendNotSatisfiable($size);
- }
- if ($parts[0]==='') {
- $start = $size - $parts[1];
- $end = $size - 1;
- } else {
- $start = $parts[0];
- $end = ($parts[1]==='') ? $size - 1 : $parts[1];
- }
-
- if ($start > $end){
- $this->sendNotSatisfiable($size);
- }
-
- $buffer = substr($data['content'], $start, $end - $start);
- $md5Sum = md5($buffer);
-
- // send the headers and data
- $this->addHeader('Content-Length', $end - $start);
- $this->addHeader('Content-md5', $md5Sum);
- $this->addHeader('Accept-Ranges', 'bytes');
- $this->addHeader('Content-Range', 'bytes ' . $start . '-' . ($end) . '/' . $size);
- $this->addHeader('Connection', 'close');
- $this->addHeader('Content-Type', $data['mimetype']);
- $this->addContentDispositionHeader();
- return $buffer;
- }
- }
-
- $this->addHeader('Content-Type', $data['mimetype']);
- $this->addContentDispositionHeader();
- $this->addHeader('Content-Length', $size);
-
- return $data['content'];
- }
-
- /**
- * Send 416 if we can't satisfy the requested ranges
- * @param integer $filesize
- */
- protected function sendRangeNotSatisfiable($filesize){
- $this->setStatus(Http::STATUS_REQUEST_RANGE_NOT_SATISFIABLE);
- $this->addHeader('Content-Range', 'bytes */' . $filesize); // Required in 416.
- return '';
- }
-
- protected function addContentDispositionHeader(){
- $encodedName = rawurlencode(basename($this->path));
- $isIE = preg_match("/MSIE/", $this->request->server["HTTP_USER_AGENT"]);
- if ($isIE){
- $this->addHeader(
- 'Content-Disposition',
- 'attachment; filename="' . $encodedName . '"'
- );
- } else {
- $this->addHeader(
- 'Content-Disposition',
- 'attachment; filename*=UTF-8\'\'' . $encodedName . '; filepath="' . $encodedName . '"'
- );
- }
- }
-}