Skip to content

Commit 6a3ce63

Browse files
committed
rename path to getWikiHostsForDomain and did some refactoring
1 parent b94d2d6 commit 6a3ce63

5 files changed

Lines changed: 58 additions & 59 deletions

File tree

app/Http/Controllers/Backend/MediaWikiHostController.php

Lines changed: 0 additions & 39 deletions
This file was deleted.
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Backend;
4+
5+
use App\Http\Controllers\Controller;
6+
use App\Services\MediaWikiHostResolver;
7+
use App\Services\UnknownDBVersionException;
8+
use App\Services\UnknownWikiDomainException;
9+
use Illuminate\Http\Request;
10+
11+
class MediaWikiHostsController extends Controller {
12+
public function getWikiHostsForDomain(Request $request): \Illuminate\Http\JsonResponse {
13+
$mediawikiHostResolver = new MediaWikiHostResolver;
14+
$domain = $request->query('domain');
15+
try {
16+
$hosts = $mediawikiHostResolver->getHostsForDomain($domain);
17+
} catch (UnknownWikiDomainException $e) {
18+
return response()->json(['error' => 'Domain not found.'], 404);
19+
} catch (UnknownDBVersionException $e) {
20+
return response()->json(['error' => 'Unknown database version.'], 500);
21+
}
22+
23+
return response()
24+
->json([
25+
'domain' => $domain,
26+
'backend-host' => $hosts['backend'],
27+
'web-host' => $hosts['web'],
28+
'api-host' => $hosts['api'],
29+
'alpha-host' => $hosts['alpha'],
30+
])
31+
->header('x-backend-host', $hosts['backend'])
32+
->header('x-web-host', $hosts['web'])
33+
->header('x-api-host', $hosts['api'])
34+
->header('x-alpha-host', $hosts['alpha']);
35+
}
36+
}

app/Services/MediaWikiHostResolver.php

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,26 +29,26 @@ class MediaWikiHostResolver {
2929
// return $this->getBackendHostForDomain($wiki->domain);
3030
// }
3131

32+
/**
33+
* @throws UnknownDBVersionException
34+
* @throws UnknownWikiDomainException
35+
*/
36+
public function getHostsForDomain(String $domain ): array {
37+
$mwVersionForDomain = $this->getMwVersionForDomain($domain);
38+
// TODO: Move host to an env variable (e.g. PLATFORM_MW_BACKEND_HOST_SUFFIX) for flexibility.
39+
return [
40+
'web' => sprintf('mediawiki-%s-app-web.default.svc.cluster.local', $mwVersionForDomain),
41+
'backend' => sprintf('mediawiki-%s-app-backend.default.svc.cluster.local', $mwVersionForDomain),
42+
'api' => sprintf('mediawiki-%s-app-api.default.svc.cluster.local', $mwVersionForDomain),
43+
'alpha' => sprintf('mediawiki-%s-app-alpha.default.svc.cluster.local', $mwVersionForDomain)
44+
];
45+
}
46+
3247
public function getBackendHostForDomain(string $domain): string {
3348
// TODO: Move 'backend.default.svc.cluster.local' to an env variable (e.g. PLATFORM_MW_BACKEND_HOST_SUFFIX) for flexibility.
3449
return sprintf('mediawiki-%s-app-backend.default.svc.cluster.local', $this->getMwVersionForDomain($domain));
3550
}
3651

37-
public function getWebHostForDomain(string $domain): string {
38-
// TODO: Move 'web.default.svc.cluster.local' to an env variable (e.g. PLATFORM_MW_WEB_HOST_SUFFIX) for flexibility.
39-
return sprintf('mediawiki-%s-app-web.default.svc.cluster.local', $this->getMwVersionForDomain($domain));
40-
}
41-
42-
public function getApiHostForDomain(string $domain): string {
43-
// TODO: Move 'api.default.svc.cluster.local' to an env variable (e.g. PLATFORM_MW_API_HOST_SUFFIX) for flexibility.
44-
return sprintf('mediawiki-%s-app-api.default.svc.cluster.local', $this->getMwVersionForDomain($domain));
45-
}
46-
47-
public function getAlphaHostForDomain(string $domain): string {
48-
// TODO: Move 'alpha.default.svc.cluster.local' to an env variable (e.g. PLATFORM_MW_ALPHA_HOST_SUFFIX) for flexibility.
49-
return sprintf('mediawiki-%s-app-alpha.default.svc.cluster.local', $this->getMwVersionForDomain($domain));
50-
}
51-
5252
public function getMwVersionForDomain(string $domain): string {
5353
$wiki = Wiki::where('domain', $domain)->first();
5454

routes/backend.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ function () {
2020
$router->get('getWikiVersionForDomain', ['uses' => 'IngressController@getWikiVersionForDomain']);
2121
});
2222

23-
$router->get('getWikiHostForDomain', ['uses' => 'MediaWikiHostController@getWikiHostForDomain']);
23+
$router->get('getWikiHostsForDomain', ['uses' => 'MediaWikiHostsController@getWikiHostsForDomain']);
2424

2525
$router->group(['prefix' => 'wiki'], function () use ($router) {
2626
$router->get('getWikiForDomain', ['uses' => 'WikiController@getWikiForDomain']);

tests/Routes/Backend/MediaWikiHostControllerTest.php renamed to tests/Routes/Backend/MediaWikiHostsControllersTest.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77
use Illuminate\Foundation\Testing\RefreshDatabase;
88
use Tests\TestCase;
99

10-
class MediaWikiHostControllerTest extends TestCase {
10+
class MediaWikiHostsControllersTest extends TestCase {
1111
use RefreshDatabase;
1212

13+
protected $route = '/backend/getWikiHostsForDomain';
14+
1315
private function createWiki(string $domain, string $version) {
1416
$wiki = Wiki::factory()->create(['domain' => $domain]);
1517
WikiDb::create([
@@ -23,13 +25,13 @@ private function createWiki(string $domain, string $version) {
2325
}
2426

2527
public function testDomainNotfound() {
26-
$this->getJson('/backend/getWikiHostForDomain?domain=notfound.wikibase.cloud')
28+
$this->getJson($this->route . '?domain=notfound.wikibase.cloud')
2729
->assertStatus(404);
2830
}
2931

3032
public function testDbVersionNotfound() {
3133
$this->createWiki('noversion.wikibase.cloud', 'unknownVersion');
32-
$this->getJson('/backend/getWikiHostForDomain?domain=noversion.wikibase.cloud')
34+
$this->getJson($this->route . '?domain=noversion.wikibase.cloud')
3335
->assertStatus(500);
3436
}
3537

@@ -42,7 +44,7 @@ public function testFoundHost() {
4244
];
4345
$this->createWiki('found.wikibase.cloud', 'mw1.43-wbs1');
4446
$this->createWiki('other.wikibase.cloud', 'otherVersion');
45-
$this->getJson('/backend/getWikiHostForDomain?domain=found.wikibase.cloud')
47+
$this->getJson($this->route . '?domain=found.wikibase.cloud')
4648
->assertStatus(200)
4749
->assertHeader('x-backend-host', $expectedHosts['backend'])
4850
->assertHeader('x-web-host', $expectedHosts['web'])

0 commit comments

Comments
 (0)