Merge pull request #1096 from ArthurHoaro/feature/download-params
Make max download size and timeout configurable
This commit is contained in:
commit
4294bc7b98
3 changed files with 96 additions and 1 deletions
|
@ -457,6 +457,32 @@ public function updateMethodVisibilitySession()
|
|||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add download size and timeout to the configuration file
|
||||
*
|
||||
* @return bool true if the update is successful, false otherwise.
|
||||
*/
|
||||
public function updateMethodDownloadSizeAndTimeoutConf()
|
||||
{
|
||||
if ($this->conf->exists('general.download_max_size')
|
||||
&& $this->conf->exists('general.download_timeout')
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (! $this->conf->exists('general.download_max_size')) {
|
||||
$this->conf->set('general.download_max_size', 1024*1024*4);
|
||||
}
|
||||
|
||||
if (! $this->conf->exists('general.download_timeout')) {
|
||||
$this->conf->set('general.download_timeout', 30);
|
||||
}
|
||||
|
||||
$this->conf->write($this->isLoggedIn);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1376,7 +1376,12 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager,
|
|||
if (empty($title) && strpos(get_url_scheme($url), 'http') !== false) {
|
||||
// Short timeout to keep the application responsive
|
||||
// The callback will fill $charset and $title with data from the downloaded page.
|
||||
get_http_response($url, 25, 4194304, get_curl_download_callback($charset, $title));
|
||||
get_http_response(
|
||||
$url,
|
||||
$conf->get('general.download_max_size', 4194304),
|
||||
$conf->get('general.download_timeout', 30),
|
||||
get_curl_download_callback($charset, $title)
|
||||
);
|
||||
if (! empty($title) && strtolower($charset) != 'utf-8') {
|
||||
$title = mb_convert_encoding($title, 'utf-8', $charset);
|
||||
}
|
||||
|
|
|
@ -620,4 +620,68 @@ public function testUpdateMethodAtomDefaultAlreadyTrue()
|
|||
$this->assertTrue($updater->updateMethodAtomDefault());
|
||||
$this->assertTrue($this->conf->get('feed.show_atom'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test updateMethodDownloadSizeAndTimeoutConf, it should be set if none is already defined.
|
||||
*/
|
||||
public function testUpdateMethodDownloadSizeAndTimeoutConf()
|
||||
{
|
||||
$sandboxConf = 'sandbox/config';
|
||||
copy(self::$configFile . '.json.php', $sandboxConf . '.json.php');
|
||||
$this->conf = new ConfigManager($sandboxConf);
|
||||
$updater = new Updater([], [], $this->conf, true);
|
||||
$this->assertTrue($updater->updateMethodDownloadSizeAndTimeoutConf());
|
||||
$this->assertEquals(4194304, $this->conf->get('general.download_max_size'));
|
||||
$this->assertEquals(30, $this->conf->get('general.download_timeout'));
|
||||
|
||||
$this->conf = new ConfigManager($sandboxConf);
|
||||
$this->assertEquals(4194304, $this->conf->get('general.download_max_size'));
|
||||
$this->assertEquals(30, $this->conf->get('general.download_timeout'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test updateMethodDownloadSizeAndTimeoutConf, it shouldn't be set if it is already defined.
|
||||
*/
|
||||
public function testUpdateMethodDownloadSizeAndTimeoutConfIgnore()
|
||||
{
|
||||
$sandboxConf = 'sandbox/config';
|
||||
copy(self::$configFile . '.json.php', $sandboxConf . '.json.php');
|
||||
$this->conf = new ConfigManager($sandboxConf);
|
||||
$this->conf->set('general.download_max_size', 38);
|
||||
$this->conf->set('general.download_timeout', 70);
|
||||
$updater = new Updater([], [], $this->conf, true);
|
||||
$this->assertTrue($updater->updateMethodDownloadSizeAndTimeoutConf());
|
||||
$this->assertEquals(38, $this->conf->get('general.download_max_size'));
|
||||
$this->assertEquals(70, $this->conf->get('general.download_timeout'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test updateMethodDownloadSizeAndTimeoutConf, only the maz size should be set here.
|
||||
*/
|
||||
public function testUpdateMethodDownloadSizeAndTimeoutConfOnlySize()
|
||||
{
|
||||
$sandboxConf = 'sandbox/config';
|
||||
copy(self::$configFile . '.json.php', $sandboxConf . '.json.php');
|
||||
$this->conf = new ConfigManager($sandboxConf);
|
||||
$this->conf->set('general.download_max_size', 38);
|
||||
$updater = new Updater([], [], $this->conf, true);
|
||||
$this->assertTrue($updater->updateMethodDownloadSizeAndTimeoutConf());
|
||||
$this->assertEquals(38, $this->conf->get('general.download_max_size'));
|
||||
$this->assertEquals(30, $this->conf->get('general.download_timeout'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test updateMethodDownloadSizeAndTimeoutConf, only the time out should be set here.
|
||||
*/
|
||||
public function testUpdateMethodDownloadSizeAndTimeoutConfOnlyTimeout()
|
||||
{
|
||||
$sandboxConf = 'sandbox/config';
|
||||
copy(self::$configFile . '.json.php', $sandboxConf . '.json.php');
|
||||
$this->conf = new ConfigManager($sandboxConf);
|
||||
$this->conf->set('general.download_timeout', 3);
|
||||
$updater = new Updater([], [], $this->conf, true);
|
||||
$this->assertTrue($updater->updateMethodDownloadSizeAndTimeoutConf());
|
||||
$this->assertEquals(4194304, $this->conf->get('general.download_max_size'));
|
||||
$this->assertEquals(3, $this->conf->get('general.download_timeout'));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue