Skip to content

Commit f6bff86

Browse files
fix: Add default values on decoding for ResolveResponse
Signed-off-by: Fabrizio Demaria <[email protected]>
1 parent cfdb0ff commit f6bff86

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

Sources/Confidence/RemoteResolveConfidenceClient.swift

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,39 @@ struct ResolvedFlag: Codable {
116116
var variant: String = ""
117117
var flagSchema: StructFlagSchema? = StructFlagSchema(schema: [:])
118118
var reason: ResolveReason
119+
120+
enum CodingKeys: String, CodingKey {
121+
case flag, value, variant, flagSchema, reason
122+
}
123+
124+
init(
125+
from decoder: Decoder
126+
) throws {
127+
let container = try decoder.container(keyedBy: CodingKeys.self)
128+
flag = try container.decode(String.self, forKey: .flag)
129+
value = try container.decodeIfPresent(NetworkStruct.self, forKey: .value) ?? NetworkStruct(fields: [:])
130+
variant = try container.decodeIfPresent(String.self, forKey: .variant) ?? ""
131+
flagSchema = try container.decodeIfPresent(
132+
StructFlagSchema.self, forKey: .flagSchema) ?? StructFlagSchema(schema: [:])
133+
reason = try container.decode(ResolveReason.self, forKey: .reason)
134+
}
135+
136+
init(
137+
flag: String,
138+
value: NetworkStruct? = NetworkStruct(fields: [:]),
139+
variant: String = "",
140+
flagSchema: StructFlagSchema? = StructFlagSchema(schema: [:]),
141+
reason: ResolveReason
142+
) {
143+
self.flag = flag
144+
self.value = value
145+
self.variant = variant
146+
self.flagSchema = flagSchema
147+
self.reason = reason
148+
}
119149
}
120150

151+
121152
public enum ResolveReason: String, Codable, CaseIterableDefaultsLast {
122153
case unspecified = "RESOLVE_REASON_UNSPECIFIED"
123154
case match = "RESOLVE_REASON_MATCH"

0 commit comments

Comments
 (0)