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

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2020-05-20 12:05:34 +0300
committerGitHub <noreply@github.com>2020-05-20 12:05:34 +0300
commit526905cfc28f701c828c439fba40d9745d3a3ba3 (patch)
treec9f554d851234870cd61669a2fa5bfa43c47b4d4
parent74e577876c2498701e61a64f63d6bed257892aac (diff)
parent6ffde128ad17a1ebe38f8d18b21a37d01b47c46b (diff)
Merge pull request #21050 from nextcloud/bug/noid/caching-and-gzipping-of-appstore-requests
Caching and compression for app store requests
-rw-r--r--lib/private/App/AppStore/Fetcher/Fetcher.php9
-rw-r--r--tests/lib/App/AppStore/Fetcher/FetcherBase.php61
2 files changed, 53 insertions, 17 deletions
diff --git a/lib/private/App/AppStore/Fetcher/Fetcher.php b/lib/private/App/AppStore/Fetcher/Fetcher.php
index 8f2fb0a7084..c109bacf135 100644
--- a/lib/private/App/AppStore/Fetcher/Fetcher.php
+++ b/lib/private/App/AppStore/Fetcher/Fetcher.php
@@ -41,7 +41,7 @@ use OCP\IConfig;
use OCP\ILogger;
abstract class Fetcher {
- public const INVALIDATE_AFTER_SECONDS = 300;
+ public const INVALIDATE_AFTER_SECONDS = 3600;
/** @var IAppData */
protected $appData;
@@ -98,12 +98,11 @@ abstract class Fetcher {
$options = [
'timeout' => 10,
+ 'headers' => ['Accept-Encoding' => 'gzip'],
];
if ($ETag !== '') {
- $options['headers'] = [
- 'If-None-Match' => $ETag,
- ];
+ $options['headers']['If-None-Match'] = $ETag;
}
$client = $this->clientService->newClient();
@@ -153,7 +152,7 @@ abstract class Fetcher {
// No caching when the version has been updated
if (isset($jsonBlob['ncversion']) && $jsonBlob['ncversion'] === $this->getVersion()) {
- // If the timestamp is older than 300 seconds request the files new
+ // If the timestamp is older than 3600 seconds request the files new
if ((int)$jsonBlob['timestamp'] > ($this->timeFactory->getTime() - self::INVALIDATE_AFTER_SECONDS)) {
return $jsonBlob['data'];
}
diff --git a/tests/lib/App/AppStore/Fetcher/FetcherBase.php b/tests/lib/App/AppStore/Fetcher/FetcherBase.php
index cfe0af40483..45f3f22b9d4 100644
--- a/tests/lib/App/AppStore/Fetcher/FetcherBase.php
+++ b/tests/lib/App/AppStore/Fetcher/FetcherBase.php
@@ -239,7 +239,7 @@ abstract class FetcherBase extends TestCase {
$this->timeFactory
->expects($this->at(0))
->method('getTime')
- ->willReturn(1501);
+ ->willReturn(4801);
$client = $this->createMock(IClient::class);
$this->clientService
->expects($this->once())
@@ -249,7 +249,15 @@ abstract class FetcherBase extends TestCase {
$client
->expects($this->once())
->method('get')
- ->with($this->endpoint)
+ ->with(
+ $this->equalTo($this->endpoint),
+ $this->equalTo([
+ 'timeout' => 10,
+ 'headers' => [
+ 'Accept-Encoding' => 'gzip',
+ ]
+ ])
+ )
->willReturn($response);
$response
->expects($this->once())
@@ -342,7 +350,15 @@ abstract class FetcherBase extends TestCase {
$client
->expects($this->once())
->method('get')
- ->with($this->endpoint)
+ ->with(
+ $this->equalTo($this->endpoint),
+ $this->equalTo([
+ 'timeout' => 10,
+ 'headers' => [
+ 'Accept-Encoding' => 'gzip',
+ ]
+ ])
+ )
->willReturn($response);
$response
->expects($this->once())
@@ -430,7 +446,15 @@ abstract class FetcherBase extends TestCase {
$client
->expects($this->once())
->method('get')
- ->with($this->endpoint)
+ ->with(
+ $this->equalTo($this->endpoint),
+ $this->equalTo([
+ 'timeout' => 10,
+ 'headers' => [
+ 'Accept-Encoding' => 'gzip',
+ ]
+ ])
+ )
->willReturn($response);
$response
->expects($this->once())
@@ -495,7 +519,15 @@ abstract class FetcherBase extends TestCase {
$client
->expects($this->once())
->method('get')
- ->with($this->endpoint)
+ ->with(
+ $this->equalTo($this->endpoint),
+ $this->equalTo([
+ 'timeout' => 10,
+ 'headers' => [
+ 'Accept-Encoding' => 'gzip',
+ ]
+ ])
+ )
->willThrowException(new \Exception());
$this->assertSame([], $this->fetcher->get());
@@ -533,11 +565,11 @@ abstract class FetcherBase extends TestCase {
$this->timeFactory
->expects($this->at(0))
->method('getTime')
- ->willReturn(1501);
+ ->willReturn(4801);
$this->timeFactory
->expects($this->at(1))
->method('getTime')
- ->willReturn(1502);
+ ->willReturn(4802);
$client = $this->createMock(IClient::class);
$this->clientService
->expects($this->once())
@@ -552,14 +584,15 @@ abstract class FetcherBase extends TestCase {
$this->equalTo([
'timeout' => 10,
'headers' => [
- 'If-None-Match' => '"myETag"'
+ 'Accept-Encoding' => 'gzip',
+ 'If-None-Match' => '"myETag"',
]
])
)->willReturn($response);
$response->method('getStatusCode')
->willReturn(304);
- $newData = '{"data":[{"id":"MyNewApp","foo":"foo"},{"id":"bar"}],"timestamp":1502,"ncversion":"11.0.0.2","ETag":"\"myETag\""}';
+ $newData = '{"data":[{"id":"MyNewApp","foo":"foo"},{"id":"bar"}],"timestamp":4802,"ncversion":"11.0.0.2","ETag":"\"myETag\""}';
$file
->expects($this->at(1))
->method('putContent')
@@ -624,6 +657,7 @@ abstract class FetcherBase extends TestCase {
$this->equalTo([
'timeout' => 10,
'headers' => [
+ 'Accept-Encoding' => 'gzip',
'If-None-Match' => '"myETag"',
]
])
@@ -638,7 +672,7 @@ abstract class FetcherBase extends TestCase {
$response->method('getHeader')
->with($this->equalTo('ETag'))
->willReturn('"newETag"');
- $fileData = '{"data":[{"id":"MyNewApp","foo":"foo"},{"id":"bar"}],"timestamp":1502,"ncversion":"11.0.0.2","ETag":"\"newETag\""}';
+ $fileData = '{"data":[{"id":"MyNewApp","foo":"foo"},{"id":"bar"}],"timestamp":4802,"ncversion":"11.0.0.2","ETag":"\"newETag\""}';
$file
->expects($this->at(1))
->method('putContent')
@@ -650,11 +684,11 @@ abstract class FetcherBase extends TestCase {
$this->timeFactory
->expects($this->at(0))
->method('getTime')
- ->willReturn(1501);
+ ->willReturn(4801);
$this->timeFactory
->expects($this->at(1))
->method('getTime')
- ->willReturn(1502);
+ ->willReturn(4802);
$expected = [
[
@@ -710,6 +744,9 @@ abstract class FetcherBase extends TestCase {
$this->equalTo($this->endpoint),
$this->equalTo([
'timeout' => 10,
+ 'headers' => [
+ 'Accept-Encoding' => 'gzip',
+ ],
])
)
->willReturn($response);