using ChrisKaczor.Common.OpenTelemetry; using ChrisKaczor.HomeMonitor.Weather.Service.Data; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.ResponseCompression; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using System.IO.Compression; using System.Reflection; using System.Text.Json.Serialization; namespace ChrisKaczor.HomeMonitor.Weather.Service; public static class Program { public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); builder.Configuration.AddEnvironmentVariables(); builder.Services.AddCommonOpenTelemetry(Assembly.GetExecutingAssembly().GetName().Name, builder.Configuration["Telemetry:Endpoint"], nameof(MessageHandler)); builder.Services.AddControllers(); builder.Services.AddTransient(); builder.Services.AddHostedService(); builder.Services.Configure(options => options.Level = CompressionLevel.Optimal); builder.Services.AddResponseCompression(options => { options.Providers.Add(); options.EnableForHttps = true; }); builder.Services.AddCors(o => o.AddPolicy("CorsPolicy", corsPolicyBuilder => corsPolicyBuilder.AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin())); builder.Services.AddMvc().AddJsonOptions(configure => configure.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter())); // --- var app = builder.Build(); if (builder.Environment.IsDevelopment()) app.UseDeveloperExceptionPage(); var database = app.Services.GetRequiredService(); database.EnsureDatabase(); app.UseCors("CorsPolicy"); app.UseResponseCompression(); app.UseRouting(); app.UseAuthorization(); app.MapControllers(); app.Run(); } }