/
Configuration.scala
68 lines (59 loc) · 2.31 KB
/
Configuration.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
package com.gu.notifications.worker
import com.gu.notifications.worker.delivery.apns.models.ApnsConfig
import com.gu.{AppIdentity, AwsIdentity}
import com.gu.conf.{ConfigurationLoader, SSMConfigurationLocation}
import com.typesafe.config.Config
import db.JdbcConfig
import com.gu.notifications.worker.delivery.fcm.models.FcmConfig
sealed trait WorkerConfiguration {
def jdbcConfig: JdbcConfig
}
case class ApnsWorkerConfiguration(jdbcConfig: JdbcConfig, apnsConfig: ApnsConfig) extends WorkerConfiguration
case class FcmWorkerConfiguration(jdbcConfig: JdbcConfig, fcmConfig: FcmConfig) extends WorkerConfiguration
case class CleanerConfiguration(jdbcConfig: JdbcConfig) extends WorkerConfiguration
object Configuration {
private def fetchConfiguration(): Config = {
val identity = AppIdentity.whoAmI(defaultAppName = "notification-worker")
ConfigurationLoader.load(identity) {
case AwsIdentity(_, _, stage, _) => SSMConfigurationLocation(s"/notifications/$stage/workers")
}
}
private def jdbcConfig(config: Config) = JdbcConfig(
driverClassName = "org.postgresql.Driver",
url = config.getString("registration.db.url"),
user = config.getString("registration.db.user"),
password = config.getString("registration.db.password"),
fixedThreadPool = config.getInt("registration.db.threads")
)
def fetchApns(): ApnsWorkerConfiguration = {
val config = fetchConfiguration()
ApnsWorkerConfiguration(
jdbcConfig(config),
ApnsConfig(
teamId = config.getString("apns.teamId"),
bundleId = config.getString("apns.bundleId"),
keyId = config.getString("apns.keyId"),
certificate = config.getString("apns.certificate"),
sendingToProdServer = config.getBoolean("apns.sendingToProdServer"),
dryRun = config.getBoolean("dryrun")
)
)
}
def fetchFirebase(): FcmWorkerConfiguration = {
val config = fetchConfiguration()
FcmWorkerConfiguration(
jdbcConfig(config),
FcmConfig(
serviceAccountKey = config.getString("fcm.serviceAccountKey"),
debug = config.getBoolean("fcm.debug"),
dryRun = config.getBoolean("dryrun")
)
)
}
def fetchCleaner(): CleanerConfiguration = {
val config = fetchConfiguration()
CleanerConfiguration(
jdbcConfig(config.getConfig("cleaner"))
)
}
}