From b5545932e7efec24f36fae76ffe8924e31e1d55a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Fri, 27 Mar 2015 01:37:25 +0100 Subject: [PATCH] use StreamResponse to download the log file - fixes #14268 --- settings/application.php | 3 +- settings/controller/logsettingscontroller.php | 42 +++---------------- .../controller/logsettingscontrollertest.php | 12 ++---- 3 files changed, 10 insertions(+), 47 deletions(-) diff --git a/settings/application.php b/settings/application.php index 6992742b8d..397e3b3de9 100644 --- a/settings/application.php +++ b/settings/application.php @@ -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') ); }); diff --git a/settings/controller/logsettingscontroller.php b/settings/controller/logsettingscontroller.php index b2493c46ba..f3de1fbb7c 100644 --- a/settings/controller/logsettingscontroller.php +++ b/settings/controller/logsettingscontroller.php @@ -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; } } diff --git a/tests/settings/controller/logsettingscontrollertest.php b/tests/settings/controller/logsettingscontrollertest.php index 84581bf578..60680ba464 100644 --- a/tests/settings/controller/logsettingscontrollertest.php +++ b/tests/settings/controller/logsettingscontrollertest.php @@ -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); } }