ASPNetCore/TestAppRuna/Startup.cs
2021-03-26 13:08:15 +07:00

113 lines
3.8 KiB
C#

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using TestAppRuna.Data;
using TestAppRuna.Entities;
using TestAppRuna.Services;
namespace TestAppRuna
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddRazorPages();
services.AddServerSideBlazor();
services.AddSingleton<WeatherForecastService>();
services.AddScoped<IMathService, MathService>();
services.AddScoped<ICartService, CartService>();
services.Configure<AppSettings>(Configuration);
services.AddScoped<AppSettings>(di => di.GetRequiredService<IOptionsMonitor<AppSettings>>().CurrentValue);
services.AddDbContext<ShopDbContext>(options =>
{
options.UseSqlite(Configuration.GetConnectionString("ShopDB"));
});
services.AddAuthentication()
.AddJwtBearer("nanaoaccounts", options =>
{
options.Authority = "https://accounts.nanao.moe/auth/realms/staging";
options.Audience = "testappruna";
}
);
services.AddCors(options => {
options.AddPolicy("BelajarNextJS", policy => {
policy.WithOrigins("http://localhost:3000")
.AllowAnyHeader()
.AllowAnyMethod();
});
});
services.AddSwaggerDocument(settings => {
});
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
using (var scope = app.ApplicationServices.CreateScope())
{
var db = scope.ServiceProvider.GetRequiredService<ShopDbContext>();
db.Database.EnsureCreated();
}
}
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
}
app.UseStaticFiles();
app.UseOpenApi(settings => {
settings.DocumentName = "v1";
settings.Path = "/swagger/v1/swagger.json";
});
app.UseSwaggerUi3(settings =>
{
settings.DocumentTitle = "TestAppRuna";
settings.DocumentPath = "/swagger/v1/swagger.json";
});
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseCors("BelajarNextJS");
app.UseEndpoints(endpoints =>
{
endpoints.MapDefaultControllerRoute();
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
});
}
}
}