public override EntityRestOptions? Read()

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();
        }