-
Notifications
You must be signed in to change notification settings - Fork 120
/
Services.scala
91 lines (80 loc) · 3.53 KB
/
Services.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package com.gu.mediaservice.lib.config
case class ServiceHosts(
kahunaPrefix: String,
apiPrefix: String,
loaderPrefix: String,
projectionPrefix: String,
cropperPrefix: String,
metadataPrefix: String,
imgopsPrefix: String,
usagePrefix: String,
collectionsPrefix: String,
leasesPrefix: String,
authPrefix: String,
thrallPrefix: String
)
object ServiceHosts {
// this is tightly coupled to the Guardian's deployment.
// TODO make more generic but w/out relying on Play config
def guardianPrefixes: ServiceHosts = {
val rootAppName: String = "media"
ServiceHosts(
kahunaPrefix = s"$rootAppName.",
apiPrefix = s"api.$rootAppName.",
loaderPrefix = s"loader.$rootAppName.",
projectionPrefix = s"loader-projection.$rootAppName",
cropperPrefix = s"cropper.$rootAppName.",
metadataPrefix = s"$rootAppName-metadata.",
imgopsPrefix = s"$rootAppName-imgops.",
usagePrefix = s"$rootAppName-usage.",
collectionsPrefix = s"$rootAppName-collections.",
leasesPrefix = s"$rootAppName-leases.",
authPrefix = s"$rootAppName-auth.",
thrallPrefix = s"thrall.$rootAppName."
)
}
}
class Services(val domainRoot: String, hosts: ServiceHosts, corsAllowedOrigins: Set[String], domainRootOverride: Option[String] = None) {
val kahunaHost: String = s"${hosts.kahunaPrefix}$domainRoot"
val apiHost: String = s"${hosts.apiPrefix}$domainRoot"
val loaderHost: String = s"${hosts.loaderPrefix}${domainRootOverride.getOrElse(domainRoot)}"
val cropperHost: String = s"${hosts.cropperPrefix}${domainRootOverride.getOrElse(domainRoot)}"
val metadataHost: String = s"${hosts.metadataPrefix}${domainRootOverride.getOrElse(domainRoot)}"
val imgopsHost: String = s"${hosts.imgopsPrefix}${domainRootOverride.getOrElse(domainRoot)}"
val usageHost: String = s"${hosts.usagePrefix}${domainRootOverride.getOrElse(domainRoot)}"
val collectionsHost: String = s"${hosts.collectionsPrefix}${domainRootOverride.getOrElse(domainRoot)}"
val leasesHost: String = s"${hosts.leasesPrefix}${domainRootOverride.getOrElse(domainRoot)}"
val authHost: String = s"${hosts.authPrefix}$domainRoot"
val projectionHost: String = s"${hosts.projectionPrefix}${domainRootOverride.getOrElse(domainRoot)}"
val thrallHost: String = s"${hosts.thrallPrefix}${domainRootOverride.getOrElse(domainRoot)}"
val kahunaBaseUri = baseUri(kahunaHost)
val apiBaseUri = baseUri(apiHost)
val loaderBaseUri = baseUri(loaderHost)
val projectionBaseUri = baseUri(projectionHost)
val cropperBaseUri = baseUri(cropperHost)
val metadataBaseUri = baseUri(metadataHost)
val imgopsBaseUri = baseUri(imgopsHost)
val usageBaseUri = baseUri(usageHost)
val collectionsBaseUri = baseUri(collectionsHost)
val leasesBaseUri = baseUri(leasesHost)
val authBaseUri = baseUri(authHost)
val thrallBaseUri = baseUri(thrallHost)
val allInternalUris = Seq(
kahunaBaseUri,
apiBaseUri,
loaderBaseUri,
cropperBaseUri,
metadataBaseUri,
usageBaseUri,
collectionsBaseUri,
leasesBaseUri,
authBaseUri,
thrallBaseUri
)
val guardianWitnessBaseUri: String = "https://n0ticeapis.com"
val corsAllowedDomains: Set[String] = corsAllowedOrigins.map(baseUri) + kahunaBaseUri + apiBaseUri + thrallBaseUri
val redirectUriParam = "redirectUri"
val redirectUriPlaceholder = s"{?$redirectUriParam}"
val loginUriTemplate = s"$authBaseUri/login$redirectUriPlaceholder"
def baseUri(host: String) = s"https://$host"
}