From 8bd52316dda8fe25923c67b1609af4c4dc4434d9 Mon Sep 17 00:00:00 2001 From: Georg Ehrke Date: Tue, 17 Dec 2019 12:20:51 +0100 Subject: [PATCH] Restore old behavior allowing to set custom appstore Signed-off-by: Georg Ehrke --- lib/private/App/AppStore/Fetcher/AppFetcher.php | 5 ----- .../App/AppStore/Fetcher/CategoryFetcher.php | 1 - lib/private/App/AppStore/Fetcher/Fetcher.php | 8 +++++--- tests/lib/App/AppStore/Fetcher/AppFetcherTest.php | 4 +++- tests/lib/App/AppStore/Fetcher/FetcherBase.php | 15 +++++++++++++++ 5 files changed, 23 insertions(+), 10 deletions(-) diff --git a/lib/private/App/AppStore/Fetcher/AppFetcher.php b/lib/private/App/AppStore/Fetcher/AppFetcher.php index badc4edb44..84ca35439f 100644 --- a/lib/private/App/AppStore/Fetcher/AppFetcher.php +++ b/lib/private/App/AppStore/Fetcher/AppFetcher.php @@ -66,7 +66,6 @@ class AppFetcher extends Fetcher { ); $this->fileName = 'apps.json'; - $this->setEndpoint(); $this->compareVersion = $compareVersion; $this->ignoreMaxVersion = true; } @@ -141,10 +140,6 @@ class AppFetcher extends Fetcher { return $response; } - private function setEndpoint() { - $this->endpointUrl = 'https://apps.nextcloud.com/api/v1/apps.json'; - } - /** * @param string $version * @param string $fileName diff --git a/lib/private/App/AppStore/Fetcher/CategoryFetcher.php b/lib/private/App/AppStore/Fetcher/CategoryFetcher.php index f2c523df90..79e350f593 100644 --- a/lib/private/App/AppStore/Fetcher/CategoryFetcher.php +++ b/lib/private/App/AppStore/Fetcher/CategoryFetcher.php @@ -53,6 +53,5 @@ class CategoryFetcher extends Fetcher { $logger ); $this->fileName = 'categories.json'; - $this->endpointUrl = 'https://apps.nextcloud.com/api/v1/categories.json'; } } diff --git a/lib/private/App/AppStore/Fetcher/Fetcher.php b/lib/private/App/AppStore/Fetcher/Fetcher.php index db8c38ac68..a9fba4382f 100644 --- a/lib/private/App/AppStore/Fetcher/Fetcher.php +++ b/lib/private/App/AppStore/Fetcher/Fetcher.php @@ -54,8 +54,6 @@ abstract class Fetcher { /** @var string */ protected $fileName; /** @var string */ - protected $endpointUrl; - /** @var string */ protected $version; /** @var string */ protected $channel; @@ -105,7 +103,7 @@ abstract class Fetcher { } $client = $this->clientService->newClient(); - $response = $client->get($this->endpointUrl, $options); + $response = $client->get($this->getEndpoint(), $options); $responseJson = []; if ($response->getStatusCode() === Http::STATUS_NOT_MODIFIED) { @@ -218,4 +216,8 @@ abstract class Fetcher { public function setChannel(string $channel) { $this->channel = $channel; } + + protected function getEndpoint(): string { + return $this->config->getSystemValue('appstoreurl', 'https://apps.nextcloud.com/api/v1') . '/' . $this->fileName; + } } diff --git a/tests/lib/App/AppStore/Fetcher/AppFetcherTest.php b/tests/lib/App/AppStore/Fetcher/AppFetcherTest.php index 214f652742..425ee60203 100644 --- a/tests/lib/App/AppStore/Fetcher/AppFetcherTest.php +++ b/tests/lib/App/AppStore/Fetcher/AppFetcherTest.php @@ -92,6 +92,8 @@ EOD; return true; } else if ($key === 'version') { return '11.0.0.2'; + } else if ($key === 'appstoreurl' && $default === 'https://apps.nextcloud.com/api/v1') { + return 'https://custom.appsstore.endpoint/api/v1'; } else { return $default; } @@ -122,7 +124,7 @@ EOD; $response = $this->createMock(IResponse::class); $client ->method('get') - ->with('https://apps.nextcloud.com/api/v1/apps.json') + ->with('https://custom.appsstore.endpoint/api/v1/apps.json') ->willReturn($response); $response ->expects($this->once()) diff --git a/tests/lib/App/AppStore/Fetcher/FetcherBase.php b/tests/lib/App/AppStore/Fetcher/FetcherBase.php index 851773a650..06a20572c1 100644 --- a/tests/lib/App/AppStore/Fetcher/FetcherBase.php +++ b/tests/lib/App/AppStore/Fetcher/FetcherBase.php @@ -137,6 +137,11 @@ abstract class FetcherBase extends TestCase { $this->config ->expects($this->at(3)) ->method('getSystemValue') + ->with('appstoreurl', 'https://apps.nextcloud.com/api/v1') + ->willReturn('https://apps.nextcloud.com/api/v1'); + $this->config + ->expects($this->at(4)) + ->method('getSystemValue') ->with( $this->equalTo('version'), $this->anything() @@ -298,6 +303,11 @@ abstract class FetcherBase extends TestCase { $this->config ->expects($this->at(3)) ->method('getSystemValue') + ->with('appstoreurl', 'https://apps.nextcloud.com/api/v1') + ->willReturn('https://apps.nextcloud.com/api/v1'); + $this->config + ->expects($this->at(4)) + ->method('getSystemValue') ->with( $this->equalTo('version'), $this->anything() @@ -382,6 +392,11 @@ abstract class FetcherBase extends TestCase { $this->config ->expects($this->at(3)) ->method('getSystemValue') + ->with('appstoreurl', 'https://apps.nextcloud.com/api/v1') + ->willReturn('https://apps.nextcloud.com/api/v1'); + $this->config + ->expects($this->at(4)) + ->method('getSystemValue') ->with( $this->equalTo('version'), $this->anything()