]> source.dussan.org Git - nextcloud-server.git/commitdiff
use StreamResponse to download the log file - fixes #14268
authorThomas Müller <thomas.mueller@tmit.eu>
Fri, 27 Mar 2015 00:37:25 +0000 (01:37 +0100)
committerMorris Jobke <hey@morrisjobke.de>
Fri, 27 Mar 2015 10:30:32 +0000 (11:30 +0100)
settings/application.php
settings/controller/logsettingscontroller.php
tests/settings/controller/logsettingscontrollertest.php

index 6992742b8d88b15c9c6e498f8b8b3b52763a2c8f..397e3b3de9123b1f92dd34201356c27c4a6be4fd 100644 (file)
@@ -114,8 +114,7 @@ class Application extends App {
                                $c->query('AppName'),
                                $c->query('Request'),
                                $c->query('Config'),
-                               $c->query('L10N'),
-                               $c->query('TimeFactory')
+                               $c->query('L10N')
                        );
                });
 
index b2493c46babac6ed4476cd863ef626c8748cbbd7..f3de1fbb7c6b109842e3d20d007d91204bd50d3c 100644 (file)
@@ -25,9 +25,8 @@ namespace OC\Settings\Controller;
 use OCP\AppFramework\Controller;
 use OCP\AppFramework\Http;
 use OCP\AppFramework\Http\JSONResponse;
-use OCP\AppFramework\Http\DataDownloadResponse;
+use OCP\AppFramework\Http\StreamResponse;
 use OCP\IL10N;
-use OCP\AppFramework\Utility\ITimeFactory;
 use OCP\IRequest;
 use OCP\IConfig;
 
@@ -47,11 +46,6 @@ class LogSettingsController extends Controller {
         */
        private $l10n;
 
-       /**
-        * @var \OCP\ITimeFactory
-        */
-       private $timefactory;
-
        /**
         * @param string $appName
         * @param IRequest $request
@@ -60,13 +54,10 @@ class LogSettingsController extends Controller {
        public function __construct($appName,
                                                                IRequest $request,
                                                                IConfig $config,
-                                                               IL10N $l10n,
-                                                               ITimeFactory $timeFactory) {
-
+                                                               IL10N $l10n) {
                parent::__construct($appName, $request);
                $this->config = $config;
                $this->l10n = $l10n;
-               $this->timefactory = $timeFactory;
        }
 
        /**
@@ -107,32 +98,11 @@ class LogSettingsController extends Controller {
         *
         * @NoCSRFRequired
         *
-        * @return DataDownloadResponse
+        * @return StreamResponse
         */
        public function download() {
-               return new DataDownloadResponse(
-                       json_encode(\OC_Log_Owncloud::getEntries(null, null)),
-                       $this->getFilenameForDownload(),
-                       'application/json'
-               );
-       }
-
-       /**
-        * get filename for the logfile that's being downloaded
-        *
-        * @param int $timestamp (defaults to time())
-        * @return string
-        */
-       private function getFilenameForDownload($timestamp=null) {
-               $instanceId = $this->config->getSystemValue('instanceid');
-
-               $filename = implode([
-                       'ownCloud',
-                       $instanceId,
-                       (!is_null($timestamp)) ? $timestamp : $this->timefactory->getTime()
-               ], '-');
-               $filename .= '.log';
-
-               return $filename;
+               $resp = new StreamResponse(\OC_Log_Owncloud::getLogFilePath());
+               $resp->addHeader('Content-Disposition', 'attachment; filename="owncloud.log"');
+               return $resp;
        }
 }
index 84581bf57824249df845f3a190e71aca3bf77209..60680ba4647237e67f251d1a21b45b8017e30d6a 100644 (file)
@@ -66,15 +66,9 @@ class LogSettingsControllerTest extends \Test\TestCase {
                ];
        }
 
-       public function testGetFilenameForDownload() {
-               $timestamp = 42;
-               $this->container['Config']
-                       ->expects($this->once())
-                       ->method('getSystemValue')
-                       ->with('instanceid')
-                       ->will($this->returnValue('0xF'));
-               $filename = \Test_Helper::invokePrivate($this->logSettingsController, 'getFilenameForDownload', [$timestamp]);
+       public function testDownload() {
+               $response = $this->logSettingsController->download();
 
-               $this->assertSame('ownCloud-0xF-42.log', $filename);
+               $this->assertInstanceOf('\OCP\AppFramework\Http\StreamResponse', $response);
        }
 }