in src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureManagementKeyValueAdapter.cs [882:963]
private FeatureUserAllocation ParseFeatureUserAllocation(ref Utf8JsonReader reader, string settingKey)
{
var featureUserAllocation = new FeatureUserAllocation();
while (reader.Read() && reader.TokenType != JsonTokenType.EndObject)
{
if (reader.TokenType != JsonTokenType.PropertyName)
{
continue;
}
string userAllocationPropertyName = reader.GetString();
switch (userAllocationPropertyName)
{
case FeatureManagementConstants.Variant:
{
if (reader.Read() && reader.TokenType == JsonTokenType.String)
{
featureUserAllocation.Variant = reader.GetString();
}
else if (reader.TokenType != JsonTokenType.Null)
{
throw CreateFeatureFlagFormatException(
FeatureManagementConstants.Variant,
settingKey,
reader.TokenType.ToString(),
JsonTokenType.String.ToString());
}
break;
}
case FeatureManagementConstants.Users:
{
if (reader.Read() && reader.TokenType == JsonTokenType.StartArray)
{
List<string> users = new List<string>();
int i = 0;
while (reader.Read() && reader.TokenType != JsonTokenType.EndArray)
{
if (reader.TokenType == JsonTokenType.String)
{
users.Add(reader.GetString());
}
else if (reader.TokenType != JsonTokenType.Null)
{
throw CreateFeatureFlagFormatException(
$"{FeatureManagementConstants.Users}[{i}]",
settingKey,
reader.TokenType.ToString(),
JsonTokenType.String.ToString());
}
i++;
}
featureUserAllocation.Users = users;
}
else if (reader.TokenType != JsonTokenType.Null)
{
throw CreateFeatureFlagFormatException(
FeatureManagementConstants.Users,
settingKey,
reader.TokenType.ToString(),
JsonTokenType.StartArray.ToString());
}
break;
}
default:
reader.Skip();
break;
}
}
return featureUserAllocation;
}