68 lines
1.9 KiB
C#
68 lines
1.9 KiB
C#
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<EnsureUserCreatedMiddleware>();
|
|
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<AppDbContext>();
|
|
// Configure the HTTP request pipeline.
|
|
if (app.Environment.IsDevelopment())
|
|
{
|
|
app.UseSwagger();
|
|
app.UseSwaggerUI();
|
|
}
|
|
|
|
app.UseHttpsRedirection();
|
|
|
|
app.UseAuthentication();
|
|
app.UseAuthorization();
|
|
app.UseMiddleware<EnsureUserCreatedMiddleware>();
|
|
app.MapControllers();
|
|
|
|
app.Run(); |