1616
1717import Foundation
1818
19+ /// Optimizely region identifiers
20+ public enum Region : String , Codable , Equatable {
21+ case US
22+ case EU
23+ }
24+
1925protocol ProjectProtocol {
2026 func evaluateAudience( audienceId: String , user: OptimizelyUserContext ) throws -> Bool
2127}
@@ -48,6 +54,8 @@ struct Project: Codable, Equatable {
4854 var environmentKey : String ?
4955 // Holdouts
5056 var holdouts : [ Holdout ]
57+ // Region
58+ var region : Region ?
5159 let logger = OPTLoggerFactory . getLogger ( )
5260
5361 // Required since logger is not decodable
@@ -57,7 +65,7 @@ struct Project: Codable, Equatable {
5765 // V3
5866 case anonymizeIP
5967 // V4
60- case rollouts, integrations, typedAudiences, featureFlags, botFiltering, sendFlagDecisions, sdkKey, environmentKey, holdouts
68+ case rollouts, integrations, typedAudiences, featureFlags, botFiltering, sendFlagDecisions, sdkKey, environmentKey, holdouts, region
6169 }
6270
6371 init ( from decoder: Decoder ) throws {
@@ -88,6 +96,8 @@ struct Project: Codable, Equatable {
8896 environmentKey = try container. decodeIfPresent ( String . self, forKey: . environmentKey)
8997 // Holdouts - defaults to empty array if key is not present
9098 holdouts = try container. decodeIfPresent ( [ Holdout ] . self, forKey: . holdouts) ?? [ ]
99+ // Region - defaults to US if not present
100+ region = try container. decodeIfPresent ( Region . self, forKey: . region)
91101 }
92102
93103 // Required since logger is not equatable
@@ -97,7 +107,9 @@ struct Project: Codable, Equatable {
97107 lhs. accountId == rhs. accountId && lhs. events == rhs. events && lhs. revision == rhs. revision &&
98108 lhs. anonymizeIP == rhs. anonymizeIP && lhs. rollouts == rhs. rollouts &&
99109 lhs. integrations == rhs. integrations && lhs. typedAudiences == rhs. typedAudiences &&
100- lhs. featureFlags == rhs. featureFlags && lhs. botFiltering == rhs. botFiltering && lhs. sendFlagDecisions == rhs. sendFlagDecisions && lhs. sdkKey == rhs. sdkKey && lhs. environmentKey == rhs. environmentKey
110+ lhs. featureFlags == rhs. featureFlags && lhs. botFiltering == rhs. botFiltering &&
111+ lhs. sendFlagDecisions == rhs. sendFlagDecisions && lhs. sdkKey == rhs. sdkKey &&
112+ lhs. environmentKey == rhs. environmentKey && lhs. region == rhs. region
101113 }
102114}
103115
0 commit comments