using CommonLib;
using Microsoft.OpenApi.Models;
using MMWebApi.Filters;
using MMWebApiEngine.Components;
using MMWebApiEngine.Services;
using Serilog;
var builder = WebApplication.CreateBuilder(args);
ConfigurationManager configuration = builder.Configuration;
// Add Filter with config to scope
builder.Services.AddScoped<HttpAuthroizationFilter>();
builder.Services.AddScoped<ILoginService, LoginService>();
builder.Services.AddSingleton<IDatabase, Database>();
builder.Services.AddSingleton<IMessage, Message>();
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
// Swagger
builder.Services.AddSwaggerGen(
c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "MMWebApi", Version = "v1" });
c.AddSecurityDefinition("SessionId", new OpenApiSecurityScheme
{
Description = "Enter SessionId",
Name = "Authorization",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey,
Scheme = "SessionId"
});
c.AddSecurityRequirement(new OpenApiSecurityRequirement()
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "SessionId"
},
Scheme = "oauth2",
Name = "SessionId",
In = ParameterLocation.Header,
},
new List<string>()
}
});
}
);
// Serilog
builder.Host.UseSerilog((ctx, lc) =>
lc.WriteTo.Console()
.MinimumLevel.Verbose()
.WriteTo.File(configuration["Paths:LogPath"], rollingInterval: RollingInterval.Day));
Log.Information($"MMWebApiService Started Ver.[{Globals.VERSION}]");
builder.WebHost.UseUrls("http://*:5000");
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment() || app.Environment.IsEnvironment("Local"))
{
app.UseDeveloperExceptionPage();
app.UseSwagger();
app.UseSwaggerUI(
// c =>
//{
// c.SwaggerEndpoint("/swagger/v1/swagger.json", "MMWebApi v1");
// c.RoutePrefix = String.Empty;
//}
);
}
app.UseCors(builder =>
{
builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
app.MapControllerRoute(
name: "default",
pattern: "{controller}/{action=Index}/{id?}");
//app.UseHttpsRedirection();
app.Run();