diff --git a/src/OpenFeature.Contrib.Providers.ConfigCat/ConfigCatProvider.cs b/src/OpenFeature.Contrib.Providers.ConfigCat/ConfigCatProvider.cs index 49edcff2..36dc80a1 100644 --- a/src/OpenFeature.Contrib.Providers.ConfigCat/ConfigCatProvider.cs +++ b/src/OpenFeature.Contrib.Providers.ConfigCat/ConfigCatProvider.cs @@ -64,7 +64,7 @@ public override async Task> ResolveStructureValue(strin var user = context?.BuildUser(); var result = await Client.GetValueDetailsAsync(flagKey, defaultValue?.AsObject, user); var returnValue = result.IsDefaultValue ? defaultValue : new Value(result.Value); - var details = new ResolutionDetails(flagKey, returnValue, ParseErrorType(result.ErrorMessage), errorMessage: result.ErrorMessage, variant: result.VariationId); + var details = new ResolutionDetails(flagKey, returnValue, TranslateErrorCode(result.ErrorCode), errorMessage: result.ErrorMessage, variant: result.VariationId); if (details.ErrorType == ErrorType.None) { return details; @@ -77,7 +77,7 @@ private async Task> ResolveFlag(string flagKey, Evaluati { var user = context?.BuildUser(); var result = await Client.GetValueDetailsAsync(flagKey, defaultValue, user); - var details = new ResolutionDetails(flagKey, result.Value, ParseErrorType(result.ErrorMessage), errorMessage: result.ErrorMessage, variant: result.VariationId); + var details = new ResolutionDetails(flagKey, result.Value, TranslateErrorCode(result.ErrorCode), errorMessage: result.ErrorMessage, variant: result.VariationId); if (details.ErrorType == ErrorType.None) { return details; @@ -86,25 +86,23 @@ private async Task> ResolveFlag(string flagKey, Evaluati throw new FeatureProviderException(details.ErrorType, details.ErrorMessage); } - private static ErrorType ParseErrorType(string errorMessage) + private static ErrorType TranslateErrorCode(EvaluationErrorCode errorCode) { - if (string.IsNullOrEmpty(errorMessage)) + switch (errorCode) { - return ErrorType.None; + case EvaluationErrorCode.None: + return ErrorType.None; + case EvaluationErrorCode.InvalidConfigModel: + return ErrorType.ParseError; + case EvaluationErrorCode.SettingValueTypeMismatch: + return ErrorType.TypeMismatch; + case EvaluationErrorCode.ConfigJsonNotAvailable: + return ErrorType.ProviderNotReady; + case EvaluationErrorCode.SettingKeyMissing: + return ErrorType.FlagNotFound; + default: + return ErrorType.General; } - if (errorMessage.Contains("Config JSON is not present")) - { - return ErrorType.ParseError; - } - if (errorMessage.Contains("the key was not found in config JSON")) - { - return ErrorType.FlagNotFound; - } - if (errorMessage.Contains("The type of a setting must match the type of the specified default value")) - { - return ErrorType.TypeMismatch; - } - return ErrorType.General; } } } \ No newline at end of file diff --git a/src/OpenFeature.Contrib.Providers.ConfigCat/OpenFeature.Contrib.Providers.ConfigCat.csproj b/src/OpenFeature.Contrib.Providers.ConfigCat/OpenFeature.Contrib.Providers.ConfigCat.csproj index 4ff809fc..c4638bd2 100644 --- a/src/OpenFeature.Contrib.Providers.ConfigCat/OpenFeature.Contrib.Providers.ConfigCat.csproj +++ b/src/OpenFeature.Contrib.Providers.ConfigCat/OpenFeature.Contrib.Providers.ConfigCat.csproj @@ -16,6 +16,6 @@ - +