using FrameProcessor.Configuration; using Microsoft.Extensions.Options; var builder = WebApplication.CreateBuilder(args); builder.Configuration.AddJsonFile("frames.json", optional: false, reloadOnChange: true); builder.Services.AddControllers(); builder.Services.AddOptions() .Bind(builder.Configuration.GetSection(MqttOptions.SectionName)) .ValidateDataAnnotations() .ValidateOnStart(); builder.Services.AddOptions() .Bind(builder.Configuration.GetSection(StorageOptions.SectionName)) .ValidateDataAnnotations() .ValidateOnStart(); builder.Services.AddOptions() .Bind(builder.Configuration.GetSection(UrlFetchOptions.SectionName)) .ValidateDataAnnotations() .ValidateOnStart(); builder.Services.AddOptions() .Configure((opts, cfg) => opts.Value = cfg[ApiKeyOptions.SectionName] ?? string.Empty) .ValidateDataAnnotations() .ValidateOnStart(); builder.Services.AddSingleton, FramesOptionsValidator>(); builder.Services.AddOptions() .Bind(builder.Configuration) .ValidateOnStart(); var app = builder.Build(); app.MapControllers(); app.Run();