in src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureManagementKeyValueAdapter.cs [1048:1129]
private FeaturePercentileAllocation ParseFeaturePercentileAllocation(ref Utf8JsonReader reader, string settingKey)
{
var featurePercentileAllocation = new FeaturePercentileAllocation();
while (reader.Read() && reader.TokenType != JsonTokenType.EndObject)
{
if (reader.TokenType != JsonTokenType.PropertyName)
{
continue;
}
string percentileAllocationPropertyName = reader.GetString();
switch (percentileAllocationPropertyName)
{
case FeatureManagementConstants.Variant:
{
if (reader.Read() && reader.TokenType == JsonTokenType.String)
{
featurePercentileAllocation.Variant = reader.GetString();
}
else if (reader.TokenType != JsonTokenType.Null)
{
throw CreateFeatureFlagFormatException(
FeatureManagementConstants.Variant,
settingKey,
reader.TokenType.ToString(),
JsonTokenType.String.ToString());
}
break;
}
case FeatureManagementConstants.From:
{
if (reader.Read() &&
((reader.TokenType == JsonTokenType.Number && reader.TryGetInt32(out int from)) ||
(reader.TokenType == JsonTokenType.String && int.TryParse(reader.GetString(), out from))))
{
featurePercentileAllocation.From = from;
}
else if (reader.TokenType != JsonTokenType.Null)
{
throw CreateFeatureFlagFormatException(
FeatureManagementConstants.From,
settingKey,
reader.TokenType.ToString(),
JsonTokenType.Number.ToString());
}
break;
}
case FeatureManagementConstants.To:
{
if (reader.Read() &&
((reader.TokenType == JsonTokenType.Number && reader.TryGetInt32(out int to)) ||
(reader.TokenType == JsonTokenType.String && int.TryParse(reader.GetString(), out to))))
{
featurePercentileAllocation.To = to;
}
else if (reader.TokenType != JsonTokenType.Null)
{
throw CreateFeatureFlagFormatException(
FeatureManagementConstants.To,
settingKey,
reader.TokenType.ToString(),
JsonTokenType.Number.ToString());
}
break;
}
default:
reader.Skip();
break;
}
}
return featurePercentileAllocation;
}