use StreamResponse to download the log file - fixes #14268

This commit is contained in:
Thomas Müller 2015-03-27 01:37:25 +01:00 committed by Morris Jobke
parent 880b31c513
commit b5545932e7
3 changed files with 10 additions and 47 deletions

View 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')
);
});

View 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;
}
}

View 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);
}
}