Skip to content

Commit 46b25cf

Browse files
authored
fix: Set version range for each scan (#169)
1 parent 04a621b commit 46b25cf

6 files changed

Lines changed: 26 additions & 34 deletions

File tree

src/Service/Scanner/ApiEndpointScanner.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
namespace Gared\EtherScan\Service\Scanner;
55

66
use Gared\EtherScan\Api\GithubApi;
7-
use Gared\EtherScan\Exception\EtherpadServiceNotFoundException;
87
use Gared\EtherScan\Model\Config;
98
use Gared\EtherScan\Service\ApiVersionLookupService;
109
use Gared\EtherScan\Service\RevisionLookupService;
@@ -20,14 +19,13 @@
2019
{
2120
public function __construct(
2221
private Client $client,
23-
private VersionRangeService $versionRangeService,
2422
private RevisionLookupService $revisionLookupService,
2523
private ApiVersionLookupService $apiVersionLookupService,
2624
private GithubApi $githubApi,
2725
) {
2826
}
2927

30-
public function scan(Config $config, ScannerServiceCallbackInterface $callback): void
28+
public function scan(Config $config, VersionRangeService $versionRangeService, ScannerServiceCallbackInterface $callback): void
3129
{
3230
$callback->onScanApiStart($config->baseUrl);
3331
try {
@@ -49,7 +47,7 @@ public function scan(Config $config, ScannerServiceCallbackInterface $callback):
4947
} catch (RuntimeException) {
5048
return;
5149
}
52-
$this->versionRangeService->setRevisionVersion($this->revisionLookupService->getVersion($commit['sha']));
50+
$versionRangeService->setRevisionVersion($this->revisionLookupService->getVersion($commit['sha']));
5351
$callback->onScanApiRevisionCommit($commit);
5452
}
5553

@@ -70,7 +68,7 @@ public function scan(Config $config, ScannerServiceCallbackInterface $callback):
7068

7169
$versionRange = $this->apiVersionLookupService->getEtherpadVersionRange($apiVersion);
7270
$callback->onScanApiVersion($apiVersion);
73-
$this->versionRangeService->addVersionRange($versionRange);
71+
$versionRangeService->addVersionRange($versionRange);
7472
}
7573

7674
private function getRevisionFromHeaders(ResponseInterface $response): ?string

src/Service/Scanner/Health/HealthScanner.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,10 @@
1414
{
1515
public function __construct(
1616
private Client $client,
17-
private VersionRangeService $versionRangeService,
1817
) {
1918
}
2019

21-
public function scan(Config $config, ScannerServiceCallbackInterface $callback): void
20+
public function scan(Config $config, VersionRangeService $versionRangeService, ScannerServiceCallbackInterface $callback): void
2221
{
2322
try {
2423
$response = $this->client->get($config->baseUrl . 'health', ['timeout' => $config->timeout]);
@@ -40,6 +39,6 @@ public function scan(Config $config, ScannerServiceCallbackInterface $callback):
4039
}
4140

4241
$callback->onHealthResult($healthData);
43-
$this->versionRangeService->setHealthVersion($healthData['releaseId']);
42+
$versionRangeService->setHealthVersion($healthData['releaseId']);
4443
}
4544
}

src/Service/Scanner/PadSocketIoScanner.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,10 @@
2020

2121
public function __construct(
2222
private Client $client,
23-
private VersionRangeService $versionRangeService,
2423
) {
2524
}
2625

27-
public function scan(Config $config, ScannerServiceCallbackInterface $callback): void
26+
public function scan(Config $config, VersionRangeService $versionRangeService, ScannerServiceCallbackInterface $callback): void
2827
{
2928
$callback->onScanPadStart();
3029
$cookies = new CookieJar();
@@ -37,7 +36,7 @@ public function scan(Config $config, ScannerServiceCallbackInterface $callback):
3736
$callback->onScanPadException($e);
3837
}
3938

40-
$versionRange = $this->versionRangeService->calculateVersion();
39+
$versionRange = $versionRangeService->calculateVersion();
4140

4241
$socketIoVersion = ElephantClient::CLIENT_2X;
4342
if (version_compare($versionRange?->getMaxVersion() ?? '999', '1.8.0', '<=')) {
@@ -52,7 +51,7 @@ public function scan(Config $config, ScannerServiceCallbackInterface $callback):
5251
}
5352

5453
try {
55-
$this->connectToPad($socketIoVersion, $cookieString, $callback, $config);
54+
$this->connectToPad($socketIoVersion, $cookieString, $callback, $versionRangeService, $config);
5655
} catch (Exception $e) {
5756
$callback->onScanPadException($e);
5857
}
@@ -62,6 +61,7 @@ private function connectToPad(
6261
int $socketIoVersion,
6362
string $cookieString,
6463
ScannerServiceCallbackInterface $callback,
64+
VersionRangeService $versionRangeService,
6565
Config $config,
6666
): void {
6767
$socketIoClient = new ElephantClient(ElephantClient::engine($socketIoVersion, $config->baseUrl . 'socket.io/', [
@@ -110,7 +110,7 @@ private function connectToPad(
110110
$onlyPlugins = $data['data']['plugins']['plugins'];
111111
unset($onlyPlugins['ep_etherpad-lite']);
112112

113-
$this->versionRangeService->setPackageVersion($version);
113+
$versionRangeService->setPackageVersion($version);
114114
$callback->onClientVars($version, $result->data);
115115
$callback->onScanPluginsList($onlyPlugins);
116116
$callback->onScanPadSuccess();

src/Service/Scanner/StaticFilesScanner.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,15 @@
1313
public function __construct(
1414
private StaticFileClient $staticFileClient,
1515
private FileHashLookupService $fileHashLookupService,
16-
private VersionRangeService $versionRangeService,
1716
) {
1817
}
1918

20-
public function scan(Config $config): void
19+
public function scan(Config $config, VersionRangeService $versionRangeService): void
2120
{
2221
foreach (FileHashLookupService::getFileNames() as $file) {
2322
$hash = $this->staticFileClient->getFileHash($config->baseUrl, $file, $config->timeout);
2423
$versionRange = $this->fileHashLookupService->getEtherpadVersionRange($file, $hash);
25-
$this->versionRangeService->addVersionRange($versionRange);
24+
$versionRangeService->addVersionRange($versionRange);
2625
}
2726
}
2827
}

src/Service/ScannerService.php

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ class ScannerService
2424
{
2525
private readonly Client $client;
2626
private readonly FileHashLookupService $fileHashLookup;
27-
private readonly VersionRangeService $versionRangeService;
2827
private readonly ApiEndpointScanner $apiEndpointScanner;
2928
private HealthScanner $healthScanner;
3029
private PluginDefinitionScanner $pluginDefinitionScanner;
@@ -53,27 +52,23 @@ public function __construct()
5352
$versionLookup = new ApiVersionLookupService();
5453
$this->fileHashLookup = new FileHashLookupService();
5554
$revisionLookup = new RevisionLookupService();
56-
$this->versionRangeService = new VersionRangeService();
5755
$githubApi = new GithubApi();
5856
$this->apiEndpointScanner = new ApiEndpointScanner(
5957
$this->client,
60-
$this->versionRangeService,
6158
$revisionLookup,
6259
$versionLookup,
6360
$githubApi,
6461
);
65-
$this->healthScanner = new HealthScanner($this->client, $this->versionRangeService);
62+
$this->healthScanner = new HealthScanner($this->client);
6663
$this->pluginDefinitionScanner = new PluginDefinitionScanner($this->client);
6764
$this->baseUrlScanner = new BaseUrlScanner($this->client);
6865
$this->staticFilesScanner = new StaticFilesScanner(
6966
new StaticFileClient($this->client),
7067
$this->fileHashLookup,
71-
$this->versionRangeService
7268
);
7369
$this->adminScanner = new AdminScanner($this->client);
7470
$this->padSocketIoScanner = new PadSocketIoScanner(
7571
$this->client,
76-
$this->versionRangeService,
7772
);
7873
$this->statsScanner = new StatsScanner($this->client);
7974
}
@@ -87,25 +82,26 @@ public function scan(
8782
float $timeout = 2.0,
8883
): Config {
8984
$config = new Config($url, $timeout);
85+
$versionRangeService = new VersionRangeService();
9086

9187
$this->baseUrlScanner->scan($config);
92-
$this->apiEndpointScanner->scan($config, $callback);
93-
$this->staticFilesScanner->scan($config);
94-
$this->padSocketIoScanner->scan($config, $callback);
95-
if ($this->versionRangeService->getPackageVersion() === null) {
88+
$this->apiEndpointScanner->scan($config, $versionRangeService, $callback);
89+
$this->staticFilesScanner->scan($config, $versionRangeService);
90+
$this->padSocketIoScanner->scan($config, $versionRangeService, $callback);
91+
if ($versionRangeService->getPackageVersion() === null) {
9692
$this->pluginDefinitionScanner->scan($config, $callback);
9793
}
98-
$this->healthScanner->scan($config, $callback);
99-
$this->progressVersionRanges($callback);
94+
$this->healthScanner->scan($config, $versionRangeService, $callback);
95+
$this->processVersionRanges($callback, $versionRangeService);
10096
$this->statsScanner->scan($config, $callback);
10197
$this->adminScanner->scan($config, $callback);
10298

10399
return $config;
104100
}
105101

106-
private function progressVersionRanges(ScannerServiceCallbackInterface $callback): void
102+
private function processVersionRanges(ScannerServiceCallbackInterface $callback, VersionRangeService $versionRangeService): void
107103
{
108-
$versionRange = $this->versionRangeService->calculateVersion();
104+
$versionRange = $versionRangeService->calculateVersion();
109105

110106
if ($versionRange === null) {
111107
throw new EtherpadServiceNotFoundException('No version information found');

tests/Unit/Service/Scanner/Health/HealthScannerTest.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ public function testScanSuccess(): void
2222
$callback->expects(self::once())->method('onHealthResult');
2323
$callback->expects(self::never())->method('onHealthException');
2424

25-
$scanner = new HealthScanner($client, $versionRangeService);
25+
$scanner = new HealthScanner($client);
2626
$config = new Config('http://example.com');
27-
$scanner->scan($config, $callback);
27+
$scanner->scan($config, $versionRangeService, $callback);
2828
}
2929

3030
public function testScanException(): void
@@ -36,8 +36,8 @@ public function testScanException(): void
3636
$callback->expects(self::never())->method('onHealthResult');
3737
$callback->expects(self::once())->method('onHealthException');
3838

39-
$scanner = new HealthScanner($client, $versionRangeService);
39+
$scanner = new HealthScanner($client);
4040
$config = new Config('http://example.com');
41-
$scanner->scan($config, $callback);
41+
$scanner->scan($config, $versionRangeService, $callback);
4242
}
4343
}

0 commit comments

Comments
 (0)