Skip to content

Commit

Permalink
Fixed defaulting of feature repository
Browse files Browse the repository at this point in the history
  • Loading branch information
Norhaven committed Jan 28, 2024
1 parent f374527 commit e5b2021
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 11 deletions.
28 changes: 18 additions & 10 deletions GrowthBook/GrowthBook.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,24 +59,32 @@ public GrowthBook(Context context)
PreferServerSentEvents = true
};

var featureCache = new InMemoryFeatureCache(cacheExpirationInSeconds: 60);
var httpClientFactory = new HttpClientFactory(requestTimeoutInSeconds: 60);

// If they didn't want to include a logger factory, just create a basic one that will
// create disabled loggers by default so we don't force a particular logging provider
// or logs on the user if they chose the defaults.

var loggerFactory = context.LoggerFactory ?? LoggerFactory.Create(builder => { });

var conditionEvaluatorLogger = loggerFactory.CreateLogger<ConditionEvaluationProvider>();
var featureRefreshLogger = loggerFactory.CreateLogger<FeatureRefreshWorker>();
var featureRepositoryLogger = loggerFactory.CreateLogger<FeatureRepository>();
_logger = loggerFactory.CreateLogger<GrowthBook>();

var featureRefreshWorker = new FeatureRefreshWorker(featureRefreshLogger, httpClientFactory, config, featureCache);
var conditionEvaluatorLogger = loggerFactory.CreateLogger<ConditionEvaluationProvider>();

_conditionEvaluator = new ConditionEvaluationProvider(conditionEvaluatorLogger);
_featureRepository = new FeatureRepository(featureRepositoryLogger, featureCache, featureRefreshWorker);

if (context.FeatureRepository != null)
{
_featureRepository = context.FeatureRepository;
}
else
{
var featureCache = new InMemoryFeatureCache(cacheExpirationInSeconds: 60);
var httpClientFactory = new HttpClientFactory(requestTimeoutInSeconds: 60);

var featureRefreshLogger = loggerFactory.CreateLogger<FeatureRefreshWorker>();
var featureRepositoryLogger = loggerFactory.CreateLogger<FeatureRepository>();

var featureRefreshWorker = new FeatureRefreshWorker(featureRefreshLogger, httpClientFactory, config, featureCache);

_featureRepository = new FeatureRepository(featureRepositoryLogger, featureCache, featureRefreshWorker);
}
}

/// <summary>
Expand Down
2 changes: 1 addition & 1 deletion GrowthBook/Providers/ConditionEvaluationProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ private bool EvalConditionValue(JToken conditionValue, JToken attributeValue)
/// <returns>True if attributeValue is an array and at least one of the array items matches the condition.</returns>
private bool ElemMatch(JObject condition, JToken attributeValue)
{
if (attributeValue.Type != JTokenType.Array)
if (attributeValue?.Type != JTokenType.Array)
{
_logger.LogDebug($"Unable to match array elements with a non-array type of '{attributeValue.Type}'");
return false;
Expand Down

0 comments on commit e5b2021

Please sign in to comment.