in src/Config/Converters/EntityRestOptionsConverterFactory.cs [49:123]
public override EntityRestOptions? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
if (reader.TokenType is JsonTokenType.StartObject)
{
EntityRestOptions restOptions = new(Methods: Array.Empty<SupportedHttpVerb>(), Path: null, Enabled: true);
while (reader.Read())
{
if (reader.TokenType is JsonTokenType.EndObject)
{
break;
}
string? propertyName = reader.GetString();
switch (propertyName)
{
case "path":
reader.Read();
if (reader.TokenType is JsonTokenType.String || reader.TokenType is JsonTokenType.Null)
{
restOptions = restOptions with { Path = reader.DeserializeString(_replaceEnvVar) };
break;
}
throw new JsonException($"The value of {propertyName} must be a string. Found {reader.TokenType}.");
case "methods":
List<SupportedHttpVerb> methods = new();
while (reader.Read())
{
if (reader.TokenType is JsonTokenType.StartArray)
{
continue;
}
if (reader.TokenType is JsonTokenType.EndArray)
{
break;
}
methods.Add(EnumExtensions.Deserialize<SupportedHttpVerb>(reader.DeserializeString(replaceEnvVar: true)!));
}
restOptions = restOptions with { Methods = methods.ToArray() };
break;
case "enabled":
reader.Read();
restOptions = restOptions with { Enabled = reader.GetBoolean() };
break;
default:
throw new JsonException($"Unexpected property {propertyName}");
}
}
return restOptions;
}
if (reader.TokenType is JsonTokenType.String)
{
return new EntityRestOptions(Array.Empty<SupportedHttpVerb>(), reader.DeserializeString(_replaceEnvVar), true);
}
if (reader.TokenType is JsonTokenType.True || reader.TokenType is JsonTokenType.False)
{
bool enabled = reader.GetBoolean();
return new EntityRestOptions(
Methods: Array.Empty<SupportedHttpVerb>(),
Path: null,
Enabled: enabled);
}
throw new JsonException();
}