using Data.Models.Interfaces; using Microsoft.AspNetCore.ResponseCompression; using Data; using Data.Models.Interfaces; using BlazorWebAssembly.Server.Endpoints; using Microsoft.AspNetCore.Authentication.JwtBearer; using BlazorWebAssembly.Server.Hubs; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllersWithViews(); builder.Services.AddRazorPages(); builder.Services.AddSignalR(); builder.Services.AddOptions() .Configure(options => { options.DataPath = @"..\..\..\..\Data\"; options.BlogPostsFolder = "Blogposts"; options.TagsFolder = "Tags"; options.CategoriesFolder = "Categories"; }); builder.Services.AddScoped(); builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, c => { c.Authority = builder.Configuration["Auth0:Authority"]; c.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters { ValidAudience = builder.Configuration["Auth0:Audience"], ValidIssuer = builder.Configuration["Auth0:Authority"] }; }); builder.Services.AddAuthorization(); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseWebAssemblyDebugging(); } else { app.UseExceptionHandler("/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseBlazorFrameworkFiles(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.MapCategoryApi(); app.MapBlogPostApi(); app.MapTagApi(); app.MapRazorPages(); app.MapControllers(); app.MapFallbackToFile("index.html"); app.MapHub("/BlogNotificationHub"); app.Run();