diff --git a/Flagsmith.FlagsmithClient/FlagsmithClient.cs b/Flagsmith.FlagsmithClient/FlagsmithClient.cs index 83615e6..588c9e1 100644 --- a/Flagsmith.FlagsmithClient/FlagsmithClient.cs +++ b/Flagsmith.FlagsmithClient/FlagsmithClient.cs @@ -113,11 +113,11 @@ public FlagsmithClient( this.Retries = retries; this.RequestTimeout = requestTimeout; this._httpClient = httpClient ?? new HttpClient(); - this.CacheConfig = cacheConfig ?? new CacheConfig(false); + this.CacheConfig = cacheConfig ?? new CacheConfig(false); this.OfflineMode = offlineMode; this._offlineHandler = offlineHandler; - _engine = new Engine(); - + _engine = new Engine(); + if (OfflineMode && _offlineHandler is null) { throw new Exception("ValueError: offlineHandler must be provided to use offline mode."); @@ -203,7 +203,7 @@ public async Task GetEnvironmentFlags() private async Task GetFeatureFlagsFromCorrectSource() { - return Environment != null ? GetFeatureFlagsFromDocument() : await GetFeatureFlagsFromApi().ConfigureAwait(false); + return OfflineMode ? GetFeatureFlagsFromDocument() : await GetFeatureFlagsFromApi().ConfigureAwait(false); } /// @@ -226,8 +226,8 @@ public async Task GetIdentityFlags(string identifier, List? trai var flagListCache = GetFlagListCacheByIdentity(identityWrapper); return flagListCache.GetLatestFlags(GetIdentityFlagsFromCorrectSource); - } - + } + if (this.OfflineMode) return this.GetIdentityFlagsFromDocument(identifier, traits ?? null); @@ -319,7 +319,7 @@ private async Task GetAndUpdateEnvironmentFromApi() try { var json = await GetJson(HttpMethod.Get, ApiUrl + "environment-document/").ConfigureAwait(false); - Environment = JsonConvert.DeserializeObject(json); + Environment = JsonConvert.DeserializeObject(json); IdentitiesWithOverridesByIdentifier = Environment?.IdentityOverrides != null ? Environment.IdentityOverrides.ToDictionary(identity => identity.Identifier) : new Dictionary(); Logger?.LogInformation("Local Environment updated: " + json); } @@ -339,7 +339,7 @@ private async Task GetFeatureFlagsFromApi() return Flags.FromApiFlag(_analyticsProcessor, DefaultFlagHandler, flags); } catch (FlagsmithAPIError e) - { + { if (Environment != null) { return this.GetFeatureFlagsFromDocument(); @@ -372,7 +372,7 @@ private async Task GetIdentityFlagsFromApi(string identity, List return Flags.FromApiFlag(_analyticsProcessor, DefaultFlagHandler, flags); } catch (FlagsmithAPIError e) - { + { if (Environment != null) { return this.GetIdentityFlagsFromDocument(identity, traits); @@ -406,8 +406,8 @@ private IFlags GetIdentityFlagsFromDocument(string identifier, List? tra }; } return Flags.FromFeatureStateModel(_analyticsProcessor, DefaultFlagHandler, _engine.GetIdentityFeatureStates(Environment, identity), identity.CompositeKey); - } - + } + public Dictionary aggregatedAnalytics => _analyticsProcessor != null ? _analyticsProcessor.GetAggregatedAnalytics() : new Dictionary(); ~FlagsmithClient() => _pollingManager?.StopPoll();