Skip to content

Commit c3c5991

Browse files
committed
Factor out JSON decoding env variables into Environment.decode
1 parent 443110d commit c3c5991

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

Sources/App/Core/Dependencies/EnvironmentClient.swift

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,7 @@ extension EnvironmentClient: DependencyKey {
7575
builderToken: { Environment.get("BUILDER_TOKEN") },
7676
buildTimeout: { Environment.get("BUILD_TIMEOUT").flatMap(Int.init) ?? 10 },
7777
buildTriggerAllowList: {
78-
Environment.get("BUILD_TRIGGER_ALLOW_LIST")
79-
.map { Data($0.utf8) }
80-
.flatMap { try? JSONDecoder().decode([Package.Id].self, from: $0) }
81-
?? []
78+
Environment.decode("BUILD_TRIGGER_ALLOW_LIST", as: [Package.Id].self) ?? []
8279
},
8380
buildTriggerDownscaling: {
8481
Environment.get("BUILD_TRIGGER_DOWNSCALING")
@@ -108,9 +105,7 @@ extension EnvironmentClient: DependencyKey {
108105
},
109106
random: { range in Double.random(in: range) },
110107
shouldFail: { failureMode in
111-
let shouldFail = Environment.get("FAILURE_MODE")
112-
.map { Data($0.utf8) }
113-
.flatMap { try? JSONDecoder().decode([String: Double].self, from: $0) } ?? [:]
108+
let shouldFail = Environment.decode("FAILURE_MODE", as: [String: Double].self) ?? [:]
114109
guard let rate = shouldFail[failureMode.rawValue] else { return false }
115110
return Double.random(in: 0...1) <= rate
116111
}
@@ -154,3 +149,12 @@ extension DependencyValues {
154149
set { self[EnvironmentClient.self] = newValue }
155150
}
156151
}
152+
153+
154+
private extension Environment {
155+
static func decode<T: Decodable>(_ key: String, as type: T.Type) -> T? {
156+
Environment.get(key)
157+
.map { Data($0.utf8) }
158+
.flatMap { try? JSONDecoder().decode(type, from: $0) }
159+
}
160+
}

0 commit comments

Comments
 (0)