using Azaion.Common.Configs; using Azaion.Common.Database; using Azaion.Common.Requests; using Azaion.Services; using FluentValidation; using Microsoft.Extensions.Options; var builder = WebApplication.CreateBuilder(args); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); builder.Services.Configure(builder.Configuration.GetSection(nameof(ResourcesConfig))); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddSingleton(sp => new DbFactory(sp.GetService>()!.Value.AzaionDb)); builder.Services.AddValidatorsFromAssemblyContaining(); var app = builder.Build(); if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseHttpsRedirection(); app.MapPost("/register-user", async (RegisterUserRequest registerUserRequest, IUserService userService, CancellationToken cancellationToken) => await userService.RegisterUser(registerUserRequest, cancellationToken)); app.MapPost("/resources/get", async (GetResourceRequest getResourceRequest, IUserService userService, IResourcesService resourcesService, CancellationToken cancellationToken) => { await userService.ValidateUser(getResourceRequest, cancellationToken); var ms = new MemoryStream(); await resourcesService.GetEncryptedResource(getResourceRequest, ms, cancellationToken); return ms; }); app.MapPost("/resources", async (UploadResourceRequest uploadResourceRequest, IResourcesService resourceService, CancellationToken cancellationToken) => await resourceService.SaveResource(uploadResourceRequest, cancellationToken)); app.Run();