using API.Extensions; using API.Helpers; using API.Middleware; using Infrastructure.Data; using Infrastructure.Identity; using Microsoft.EntityFrameworkCore; using StackExchange.Redis; namespace API { public class Startup { private readonly IConfiguration _config; public Startup(IConfiguration config) { _config = config; } // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddApplicationServices(); services.AddIdentityServices(_config); services.AddSwaggerDocumentation(); services.AddDbContext(x => x.UseSqlite(_config.GetConnectionString("DefaultConnection"))); services.AddDbContext(x => x.UseSqlite(_config.GetConnectionString("IdentityConnection"))); services.AddSingleton(c => { var configuration = ConfigurationOptions.Parse(_config.GetConnectionString("redis"), true); return ConnectionMultiplexer.Connect(configuration); }); services.AddAutoMapper(typeof(MappingProfiles)); services.AddCors(opt => { opt.AddPolicy("CorsPolicy", policy => { policy.AllowAnyHeader().AllowAnyMethod().WithOrigins("https://localhost:4200"); }); }); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseMiddleware(); app.UseStatusCodePagesWithReExecute("/errors/{0}"); app.UseHttpsRedirection(); app.UseRouting(); app.UseStaticFiles(); app.UseCors("CorsPolicy"); app.UseAuthentication(); app.UseAuthorization(); app.UseSwaggerDocumentation(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); } } }