Procházet zdrojové kódy

No more startup, everything is in Program.cs

master
radivoje.milutinovic před 3 roky
rodič
revize
800aa13d9c

+ 1
- 1
SecureSharing/Infrastructure/ModelFactory.cs Zobrazit soubor

@@ -44,7 +44,7 @@ public sealed class ModelFactory : IModelFactory
}
}
}
catch (Exception e)
catch (Exception _)
{
model = new LinkModel { IsValid = false };
}

+ 95
- 12
SecureSharing/Program.cs Zobrazit soubor

@@ -1,15 +1,98 @@
namespace SecureSharing;
// namespace SecureSharing;
//
// public sealed class Program
// {
// public static void Main(string[] args)
// {
// CreateHostBuilder(args).Build().Run();
// }
//
// public static IHostBuilder CreateHostBuilder(string[] args)
// {
// return Host.CreateDefaultBuilder(args)
// .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
// }
// }

public sealed class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
using Microsoft.AspNetCore.Identity;
using Quartz;
using Quartz.Impl;
using Quartz.Spi;
using SecureSharing.Business.Infrastructure;
using SecureSharing.Business.Infrastructure.Extensions;
using SecureSharing.Business.Infrastructure.Settings;
using SecureSharing.Business.Interfaces;
using SecureSharing.Business.Services;
using SecureSharing.Data.DbContexts;
using SecureSharing.Infrastructure;
using SecureSharing.Infrastructure.Middleware;
using SecureSharing.Quartz;

var builder = WebApplication.CreateBuilder(args);
var Configuration = builder.Configuration;
var services = builder.Services;

StartupConfiguration.ConfigureStartupConfig<EmailSettings>(services, Configuration);
services.AddControllersWithViews();
services.AddRazorPages();
StartupExtensions.ConfigureServices(services);
services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = false)
.AddDefaultUI()
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<AppDbContext>();

services.AddScoped<IMessageService, MessageService>();
services.AddScoped<IModelFactory, ModelFactory>();

public static IHostBuilder CreateHostBuilder(string[] args)
services.AddAuthentication()
.AddGoogle(options =>
{
return Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
}
}
options.ClientId = Configuration.GetSection("EmailSettings").GetSection("ClientId").Value;
options.ClientSecret = Configuration.GetSection("EmailSettings").GetSection("ClientSecret").Value;
});


// Add Quartz services
services.AddSingleton<IJobFactory, JobFactory>();
services.AddSingleton<ISchedulerFactory, StdSchedulerFactory>();

// Add our jobs
services.AddScoped<MessageDeletionJob>();
services.AddSingleton(new JobMetadata(
typeof(MessageDeletionJob),
"0 0 12 * * ?"));


services.AddHostedService<JobsService>();

var app = builder.Build();

if (builder.Environment.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/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.UseRouting();
app.UseAuthentication();
app.UseAuthorization();

app.UseMiddleware(typeof(ExceptionHandlingMiddleware));

app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
"default",
"{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});

app.Run();

+ 1
- 3
SecureSharing/Quartz/MessageDeletionJob.cs Zobrazit soubor

@@ -1,6 +1,4 @@
using System;
using System.Threading.Tasks;
using Quartz;
using Quartz;
using SecureSharing.Business.Interfaces;

namespace SecureSharing.Quartz;

+ 15
- 15
SecureSharing/SecureSharing.csproj Zobrazit soubor

@@ -9,31 +9,31 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="AutoMapper" Version="11.0.1"/>
<PackageReference Include="Microsoft.AspNet.Identity.Core" Version="2.2.3"/>
<PackageReference Include="Microsoft.AspNetCore.Authentication.Google" Version="6.0.9"/>
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="6.0.9"/>
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="6.0.9"/>
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="6.0.9"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.9"/>
<PackageReference Include="AutoMapper" Version="11.0.1" />
<PackageReference Include="Microsoft.AspNet.Identity.Core" Version="2.2.3" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.Google" Version="6.0.9" />
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="6.0.9" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="6.0.9" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="6.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.9">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="6.0.9"/>
<PackageReference Include="Newtonsoft.Json" Version="13.0.1"/>
<PackageReference Include="Quartz" Version="3.5.0"/>
<PackageReference Include="Serilog" Version="2.12.0"/>
<PackageReference Include="Serilog.AspNetCore" Version="6.0.1"/>
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="6.0.9" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="Quartz" Version="3.5.0" />
<PackageReference Include="Serilog" Version="2.12.0" />
<PackageReference Include="Serilog.AspNetCore" Version="6.0.1" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\SecureSharing.Business\SecureSharing.Business.csproj"/>
<ProjectReference Include="..\SecureSharing.Data\SecureSharing.Data.csproj"/>
<ProjectReference Include="..\SecureSharing.Business\SecureSharing.Business.csproj" />
<ProjectReference Include="..\SecureSharing.Data\SecureSharing.Data.csproj" />
</ItemGroup>

<ItemGroup>
<Folder Include="AppData\Errors\"/>
<Folder Include="AppData\Errors\" />
</ItemGroup>

</Project>

+ 0
- 99
SecureSharing/Startup.cs Zobrazit soubor

@@ -1,99 +0,0 @@
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Quartz;
using Quartz.Impl;
using Quartz.Spi;
using SecureSharing.Business.Infrastructure;
using SecureSharing.Business.Infrastructure.Extensions;
using SecureSharing.Business.Infrastructure.Settings;
using SecureSharing.Business.Interfaces;
using SecureSharing.Business.Services;
using SecureSharing.Data.DbContexts;
using SecureSharing.Infrastructure;
using SecureSharing.Infrastructure.Middleware;
using SecureSharing.Quartz;

namespace SecureSharing;

public sealed 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.
public void ConfigureServices(IServiceCollection services)
{
StartupConfiguration.ConfigureStartupConfig<EmailSettings>(services, Configuration);
services.AddControllersWithViews();
services.AddRazorPages();
StartupExtensions.ConfigureServices(services);
services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = false)
.AddDefaultUI()
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<AppDbContext>();

services.AddScoped<IMessageService, MessageService>();
services.AddScoped<IModelFactory, ModelFactory>();

services.AddAuthentication()
.AddGoogle(options =>
{
options.ClientId = Configuration.GetSection("EmailSettings").GetSection("ClientId").Value;
options.ClientSecret = Configuration.GetSection("EmailSettings").GetSection("ClientSecret").Value;
});


// Add Quartz services
services.AddSingleton<IJobFactory, JobFactory>();
services.AddSingleton<ISchedulerFactory, StdSchedulerFactory>();

// Add our jobs
services.AddScoped<MessageDeletionJob>();
services.AddSingleton(new JobMetadata(
typeof(MessageDeletionJob),
"0 0 12 * * ?"));


services.AddHostedService<JobsService>();
}

// 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())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/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.UseRouting();
app.UseAuthentication();
app.UseAuthorization();

app.UseMiddleware(typeof(ExceptionHandlingMiddleware));

app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
"default",
"{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
}
}

Načítá se…
Zrušit
Uložit