diff options
Diffstat (limited to 'Program.cs')
| -rw-r--r-- | Program.cs | 71 |
1 files changed, 11 insertions, 60 deletions
@@ -1,67 +1,18 @@ -using HyperBooru.Services; -using Microsoft.AspNetCore.Authentication.Cookies; -using Microsoft.AspNetCore.DataProtection; -using Microsoft.AspNetCore.Http.Json; -using Microsoft.EntityFrameworkCore; -using System.Text.Json.Serialization; +using HyperBooru.ApiClient; +using HyperBooru.Client.Services; +using Microsoft.AspNetCore.Components.WebAssembly.Hosting; -namespace HyperBooru; +namespace HyperBooru.Client; -public class Program { - public static void Main(string[] args) { - var builder = WebApplication.CreateBuilder(args); - builder.Services.AddSession(); - builder.Services.AddHttpContextAccessor(); - builder.Services.AddAuthentication( - CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(); - builder.Services.AddAuthorization(); - builder.Services.AddControllers().AddJsonOptions(o => { - var converter = new JsonStringEnumConverter(); - o.JsonSerializerOptions.Converters.Add(converter); - }); - builder.Services.Configure<JsonOptions>(o => { - o.SerializerOptions.TypeInfoResolverChain.Insert(0, new ExceptionJsonResolver()); - }); - builder.Services.AddRazorPages(); - builder.Services.AddServerSideBlazor(); +internal class Program { + static async Task Main(string[] args) { + var builder = WebAssemblyHostBuilder.CreateDefault(args); - // Add our custom services - builder.Services.AddSingleton<IConfigService, ConfigService>(); - builder.Services.AddDbContextFactory<HBContext>(); - builder.Services.AddScoped<IFeedService, FeedService>(); - builder.Services.AddScoped<ITagService, TagService>(); - builder.Services.AddScoped<IMediaService, MediaService>(); - builder.Services.AddSingleton<IGlobalUserService, GlobalUserService>(); - builder.Services.AddScoped<IUserService, UserService>(); - builder.Services.AddHostedService<OcrService>(); builder.Services.AddSingleton<ISourceService, SourceService>(); + builder.Services.AddSingleton<HBSession>(sp => new(new HttpClient { + BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) + })); - // Ensure session keys are stored in a persistent location on all platforms - builder.Services.AddDataProtection() - .PersistKeysToFileSystem(new( - builder.Services.BuildServiceProvider() - .GetRequiredService<IConfigService>() - .KeyPath)); - - var app = builder.Build(); - - // Ensure database is created and it's schema is up to date - using var scope = app.Services.CreateScope(); - using var db = scope.ServiceProvider.GetRequiredService<HBContext>(); - db.Database.Migrate(); - - app.UseRouting(); - app.UseSession(); - app.UseAuthentication(); - app.UseAuthorization(); - app.UseHsts(); - app.UseHttpsRedirection(); - app.UseStaticFiles(); - app.UseMiddleware<ExceptionMiddleware>(); - app.MapBlazorHub(); - app.MapControllers(); - app.MapFallbackToPage("/_Host"); - - app.Run(); + await builder.Build().RunAsync(); } } |
