|
19 | 19 | import io.split.android.client.network.CertificatePinningConfiguration; |
20 | 20 | import io.split.android.client.shared.UserConsent; |
21 | 21 | import io.split.android.client.utils.logger.SplitLogLevel; |
| 22 | +import io.split.android.client.fallback.FallbackTreatmentsConfiguration; |
| 23 | +import io.split.android.client.fallback.FallbackTreatment; |
22 | 24 |
|
23 | 25 | class SplitClientConfigHelper { |
24 | 26 |
|
@@ -55,6 +57,11 @@ class SplitClientConfigHelper { |
55 | 57 | private static final String ROLLOUT_CACHE_CONFIGURATION = "rolloutCacheConfiguration"; |
56 | 58 | private static final String ROLLOUT_CACHE_CONFIGURATION_EXPIRATION = "expirationDays"; |
57 | 59 | private static final String ROLLOUT_CACHE_CONFIGURATION_CLEAR_ON_INIT = "clearOnInit"; |
| 60 | + private static final String FALLBACK_TREATMENTS = "fallbackTreatments"; |
| 61 | + private static final String FALLBACK_TREATMENTS_GLOBAL = "global"; |
| 62 | + private static final String FALLBACK_TREATMENTS_BY_FLAG = "byFlag"; |
| 63 | + private static final String FALLBACK_TREATMENT_VALUE = "treatment"; |
| 64 | + private static final String FALLBACK_TREATMENT_CONFIG = "config"; |
58 | 65 |
|
59 | 66 | /** |
60 | 67 | * Creates a {@link SplitClientConfig} object from a map. |
@@ -262,6 +269,29 @@ static SplitClientConfig fromMap(@NonNull Map<String, Object> configurationMap, |
262 | 269 | } |
263 | 270 | } |
264 | 271 |
|
| 272 | + Map<String, Object> fallbackTreatments = getObjectMap(configurationMap, FALLBACK_TREATMENTS); |
| 273 | + if (fallbackTreatments != null) { |
| 274 | + Map<String, Object> global = getObjectMap(fallbackTreatments, FALLBACK_TREATMENTS_GLOBAL); |
| 275 | + Map<String, Object> byFlag = getObjectMap(fallbackTreatments, FALLBACK_TREATMENTS_BY_FLAG); |
| 276 | + if (global != null || byFlag != null) { |
| 277 | + FallbackTreatmentsConfiguration.Builder fallbackTreatmentsBuilder = FallbackTreatmentsConfiguration.builder(); |
| 278 | + if (global != null) { |
| 279 | + fallbackTreatmentsBuilder.global(new FallbackTreatment(getString(global, FALLBACK_TREATMENT_VALUE), getString(global, FALLBACK_TREATMENT_CONFIG))); |
| 280 | + } |
| 281 | + if (byFlag != null) { |
| 282 | + Map<String, FallbackTreatment> byFlagMap = new HashMap<>(); |
| 283 | + for (Map.Entry<String, Object> entry : byFlag.entrySet()) { |
| 284 | + Map<String, Object> byFlagFallbackTreatment = getObjectMap(byFlag, entry.getKey()); |
| 285 | + if (byFlagFallbackTreatment != null) { |
| 286 | + byFlagMap.put(entry.getKey(), new FallbackTreatment(getString(byFlagFallbackTreatment, FALLBACK_TREATMENT_VALUE), getString(byFlagFallbackTreatment, FALLBACK_TREATMENT_CONFIG))); |
| 287 | + } |
| 288 | + } |
| 289 | + fallbackTreatmentsBuilder.byFlag(byFlagMap); |
| 290 | + } |
| 291 | + builder.fallbackTreatments(fallbackTreatmentsBuilder.build()); |
| 292 | + } |
| 293 | + } |
| 294 | + |
265 | 295 | return builder.serviceEndpoints(serviceEndpointsBuilder.build()).build(); |
266 | 296 | } |
267 | 297 |
|
|
0 commit comments