using DBConnection; using DBConnection.Contexts; using DBConnection.Extensions; using Microsoft.EntityFrameworkCore; using Microsoft.OpenApi.Models; using Newtonsoft.Json; using Treestar.Shared.Authentication.JwtBearer; using WebNovelPortalAPI.Extensions; using WebNovelPortalAPI.Middleware; using WebNovelPortalAPI.Scrapers; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddDbServices(builder.Configuration); builder.Services.AddScrapers(); builder.Services.AddJwtBearerAuth(builder.Configuration); builder.Services.AddScoped(); builder.Services.AddControllers().AddNewtonsoftJson(opt => { opt.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; }); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(opt => { opt.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme { In = ParameterLocation.Header, Description = "Bearer token", Name = "Authorization", Type = SecuritySchemeType.Http, BearerFormat = "JWT", Scheme = "bearer" }); opt.AddSecurityRequirement(new OpenApiSecurityRequirement { { new OpenApiSecurityScheme { Reference = new OpenApiReference { Type=ReferenceType.SecurityScheme, Id="Bearer" } }, new string[]{} } }); }); var app = builder.Build(); app.UpdateDatabase(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseHttpsRedirection(); app.UseAuthentication(); app.UseAuthorization(); app.UseMiddleware(); app.MapControllers(); app.Run();