Files
WatchIt/WatchIt.Website/WatchIt.Website/Program.cs

87 lines
2.9 KiB
C#
Raw Normal View History

using System.Text.Json;
using System.Text.Json.Serialization;
using Microsoft.AspNetCore.Components.Authorization;
2024-07-03 22:18:32 +02:00
using WatchIt.Common.Services.HttpClient;
using WatchIt.Website.Services.Utility.Authentication;
2024-07-03 22:18:32 +02:00
using WatchIt.Website.Services.Utility.Configuration;
using WatchIt.Website.Services.Utility.Tokens;
2024-07-03 22:18:32 +02:00
using WatchIt.Website.Services.WebAPI.Accounts;
using WatchIt.Website.Services.WebAPI.Media;
using WatchIt.Website.Services.WebAPI.Movies;
2024-09-22 23:11:21 +02:00
using WatchIt.Website.Services.WebAPI.Series;
2024-04-27 22:36:16 +02:00
namespace WatchIt.Website;
2024-07-03 22:18:32 +02:00
public static class Program
2024-04-27 22:36:16 +02:00
{
2024-07-03 22:18:32 +02:00
#region PUBLIC METHODS
2024-04-27 22:36:16 +02:00
public static void Main(string[] args)
{
2024-07-03 22:18:32 +02:00
WebApplication app = WebApplication.CreateBuilder(args)
.SetupServices()
.SetupAuthentication()
2024-07-03 22:18:32 +02:00
.SetupApplication()
.Build();
2024-04-27 22:36:16 +02:00
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseAntiforgery();
app.MapRazorComponents<App>()
.AddInteractiveServerRenderMode();
app.Run();
}
2024-07-03 22:18:32 +02:00
#endregion
#region PRIVATE METHODS
2024-07-03 22:18:32 +02:00
private static WebApplicationBuilder SetupServices(this WebApplicationBuilder builder)
{
builder.Services.AddSingleton<HttpClient>();
2024-07-03 22:18:32 +02:00
// Utility
builder.Services.AddSingleton<IHttpClientService, HttpClientService>();
builder.Services.AddSingleton<IConfigurationService, ConfigurationService>();
builder.Services.AddScoped<ITokensService, TokensService>();
builder.Services.AddScoped<IAuthenticationService, AuthenticationService>();
2024-07-03 22:18:32 +02:00
// WebAPI
builder.Services.AddScoped<IAccountsWebAPIService, AccountsWebAPIService>();
2024-07-03 22:18:32 +02:00
builder.Services.AddSingleton<IMediaWebAPIService, MediaWebAPIService>();
builder.Services.AddSingleton<IMoviesWebAPIService, MoviesWebAPIService>();
2024-09-22 23:11:21 +02:00
builder.Services.AddSingleton<ISeriesWebAPIService, SeriesWebAPIService>();
return builder;
}
private static WebApplicationBuilder SetupAuthentication(this WebApplicationBuilder builder)
{
builder.Services.AddAuthorizationCore();
builder.Services.AddScoped<AuthenticationStateProvider, JWTAuthenticationStateProvider>();
2024-07-03 22:18:32 +02:00
return builder;
}
private static WebApplicationBuilder SetupApplication(this WebApplicationBuilder builder)
{
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();
return builder;
}
#endregion
2024-04-27 22:36:16 +02:00
}