Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public static void RegisterFoundatio(this ContainerBuilder self)

var subscribeAsyncMethodInfo = typeof(IMessageSubscriber)
.GetMethods()
.Single(methodInfo => methodInfo.Name == "SubscribeAsync");
.Single(methodInfo => methodInfo.Name == nameof(IMessageSubscriber.SubscribeAsync));

self.RegisterBuildCallback(container =>
{
Expand Down Expand Up @@ -55,7 +55,7 @@ public static void RegisterFoundatio(this ContainerBuilder self)
var messageType = iMessageHandlerType.GetGenericArguments().Single();

// Get the handle method for the message type
var handleMessageAsyncMethodInfo = iMessageHandlerType.GetMethod("HandleMessageAsync", new[] { messageType, typeof(CancellationToken) });
var handleMessageAsyncMethodInfo = iMessageHandlerType.GetMethod(nameof(IMessageHandler<object>.HandleMessageAsync), new[] { messageType, typeof(CancellationToken) });

// Create a delegate which satisfies SubscribeAsync, and calls the handle method
var messageHandlerParameter = Expression.Parameter(iMessageHandlerType);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Autofac" Version="4.8.1" />
<PackageReference Include="Foundatio" Version="7.1.1845" />
<PackageReference Include="Autofac" Version="5.*" />
<PackageReference Include="Foundatio" Version="10.4.0" />
</ItemGroup>

<ItemGroup>
Expand Down
45 changes: 23 additions & 22 deletions src/SpikeCore/SpikeCore.Web/Program.cs
Original file line number Diff line number Diff line change
@@ -1,44 +1,32 @@
using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;

using Microsoft.AspNetCore;
using Autofac.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Serilog;
using Serilog.Events;
using SpikeCore.Domain;

namespace SpikeCore.Web
{
public class Program
{
private static IConfiguration Configuration { get; } = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile(path: "appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();

{
public static async Task Main(string[] args)
{
var cancellationTokenSource = new CancellationTokenSource();
var tokenHolder = new WebHostCancellationTokenHolder(cancellationTokenSource);

Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(Configuration)
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.Enrich.WithProperty("App Name", "SpikeCore")
.CreateLogger();
.WriteTo.Console()
.CreateBootstrapLogger();

try
{
var webHost = WebHost
.CreateDefaultBuilder(args)
.ConfigureServices(servicesCollection => { servicesCollection.AddSingleton(tokenHolder); })
.UseStartup<Startup>()
.UseSerilog()
.Build();

Console.CancelKeyPress += (sender, eventArgs) =>
{
eventArgs.Cancel = true;
Expand All @@ -49,13 +37,26 @@ public static async Task Main(string[] args)

Log.Information("Running, press CTRL-C to stop the bot.");

await webHost.RunAsync(cancellationTokenSource.Token);
await CreateHostBuilder(args).ConfigureServices(servicesCollection => { servicesCollection.AddSingleton(tokenHolder); }).Build().RunAsync(cancellationTokenSource.Token);
Log.Information("The bot has successfully stopped.");
}
finally
{
Log.CloseAndFlush();
}
}

public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.UseSerilog((context, services, configuration) => configuration
.ReadFrom.Configuration(context.Configuration)
.ReadFrom.Services(services)
.Enrich.FromLogContext()
.Enrich.WithProperty("App Name", "SpikeCore"))
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
24 changes: 12 additions & 12 deletions src/SpikeCore/SpikeCore.Web/SpikeCore.Web.csproj
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<UserSecretsId>aspnet-SpikeCore.Web-E201EA6B-FD51-4107-8B35-2258C27E66F3</UserSecretsId>
<TypeScriptToolsVersion>2.8</TypeScriptToolsVersion>
<LangVersion>latest</LangVersion>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Autofac" Version="4.8.1" />
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.3.1" />
<PackageReference Include="Foundatio" Version="7.1.1845" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="5.0.7" />
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="5.0.7" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.7" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="5.0.2" />
<PackageReference Include="Serilog.AspNetCore" Version="4.1.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" />
<PackageReference Include="Serilog.Settings.Configuration" Version="3.1.0" />
<PackageReference Include="Serilog.Sinks.Seq" Version="5.0.1" />
<PackageReference Include="Autofac" Version="5.2.0" />
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="6.0.0" />
<PackageReference Include="Foundatio" Version="10.4.0" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="6.0.3" />
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="6.0.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.3" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="6.0.2" />
<PackageReference Include="Serilog.AspNetCore" Version="5.0.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="4.0.1" />
<PackageReference Include="Serilog.Settings.Configuration" Version="3.3.0" />
<PackageReference Include="Serilog.Sinks.Seq" Version="5.1.1" />
<PackageReference Include="SerilogAnalyzer" Version="0.15.0" />
</ItemGroup>

Expand Down
29 changes: 17 additions & 12 deletions src/SpikeCore/SpikeCore.Web/Startup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public Startup(IConfiguration configuration)
Configuration.GetSection("Web").Bind(WebConfig);
}

public IServiceProvider ConfigureServices(IServiceCollection services)
public void ConfigureServices(IServiceCollection services)
{
if (WebConfig.Enabled)
{
Expand Down Expand Up @@ -82,8 +82,7 @@ public IServiceProvider ConfigureServices(IServiceCollection services)
if (WebConfig.Enabled)
{
services
.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
.AddControllersWithViews();

services.ConfigureApplicationCookie(options =>
{
Expand All @@ -94,10 +93,17 @@ public IServiceProvider ConfigureServices(IServiceCollection services)
}

services.AddHttpClient();
}

var containerBuilder = new ContainerBuilder();

containerBuilder.Populate(services);
// ConfigureContainer is where you can register things directly
// with Autofac. This runs after ConfigureServices so the things
// here will override registrations made in ConfigureServices.
// Don't build the container; that gets done for you by the factory.
public void ConfigureContainer(ContainerBuilder containerBuilder)
{
// Register your own things directly with Autofac here. Don't
// call builder.Populate(), that happens in AutofacServiceProviderFactory
// for you.

var ircConnectionConfig = new IrcConnectionConfig();
Configuration.GetSection("IrcConnection").Bind(ircConnectionConfig);
Expand Down Expand Up @@ -145,7 +151,11 @@ public IServiceProvider ConfigureServices(IServiceCollection services)
.PropertiesAutowired()
.SingleInstance();

var container = containerBuilder.Build();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
var container = app.ApplicationServices.GetAutofacRoot();

// Grab an instance of IBot so that it gets activated.
// We don't need to keep hold of it, it's a singleton.
Expand All @@ -156,11 +166,6 @@ public IServiceProvider ConfigureServices(IServiceCollection services)
container.Resolve<IEnumerable<IModule>>();
container.Resolve<LoggingListener>();

return new AutofacServiceProvider(container);
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (WebConfig.Enabled)
{
if (env.IsDevelopment())
Expand Down
18 changes: 9 additions & 9 deletions src/SpikeCore/SpikeCore/SpikeCore.csproj
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<LangVersion>latest</LangVersion>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Foundatio" Version="7.1.1845" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="5.0.7" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.7" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.7" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.7" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.7" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="5.0.0" />
<PackageReference Include="Microsoft.Extensions.Http" Version="5.0.0" />
<PackageReference Include="Foundatio" Version="10.4.0" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="6.0.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.3" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Http" Version="6.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="Serilog" Version="2.10.0" />
<PackageReference Include="SerilogAnalyzer" Version="0.15.0" />
Expand Down