mirror of
https://github.com/Readarr/Readarr.git
synced 2026-04-18 21:34:28 -04:00
SignalR/Nancy/Owin/Mono
This commit is contained in:
@@ -3,6 +3,7 @@ using FluentMigrator.Runner;
|
||||
using NLog;
|
||||
using Nancy.Bootstrapper;
|
||||
using NzbDrone.Api;
|
||||
using NzbDrone.Api.SignalR;
|
||||
using NzbDrone.Common;
|
||||
using NzbDrone.Common.Messaging;
|
||||
using NzbDrone.Core.Datastore;
|
||||
@@ -37,6 +38,8 @@ namespace NzbDrone
|
||||
Container.Register(typeof(IBasicRepository<RootFolder>), typeof(BasicRepository<RootFolder>)).AsMultiInstance();
|
||||
Container.Register(typeof(IBasicRepository<NamingConfig>), typeof(BasicRepository<NamingConfig>)).AsMultiInstance();
|
||||
|
||||
AutoRegisterImplementations<NzbDronePersistentConnection>();
|
||||
|
||||
InitDatabase();
|
||||
|
||||
ReportingService.RestProvider = Container.Resolve<RestProvider>();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
@@ -91,6 +91,12 @@
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\FluentMigrator.1.0.6.0\tools\FluentMigrator.Runner.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.AspNet.SignalR.Core">
|
||||
<HintPath>..\packages\Microsoft.AspNet.SignalR.Core.1.0.1\lib\net40\Microsoft.AspNet.SignalR.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.AspNet.SignalR.Owin">
|
||||
<HintPath>..\packages\Microsoft.AspNet.SignalR.Owin.1.0.1\lib\net40\Microsoft.AspNet.SignalR.Owin.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="Microsoft.Owin.Host.HttpListener">
|
||||
<HintPath>..\packages\Microsoft.Owin.Host.HttpListener.0.21.0-pre\lib\net40\Microsoft.Owin.Host.HttpListener.dll</HintPath>
|
||||
@@ -106,6 +112,10 @@
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\Nancy.Owin.0.16.1\lib\net40\Nancy.Owin.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\Newtonsoft.Json.4.5.11\lib\net35\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NLog, Version=2.0.1.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\NLog.2.0.1.2\lib\net40\NLog.dll</HintPath>
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace NzbDrone.Owin.MiddleWare
|
||||
{
|
||||
public interface IOwinMiddleWare
|
||||
{
|
||||
int Order { get; }
|
||||
void Attach(IAppBuilder appBuilder);
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,8 @@ namespace NzbDrone.Owin.MiddleWare
|
||||
_nancyBootstrapper = nancyBootstrapper;
|
||||
}
|
||||
|
||||
public int Order { get { return 1; } }
|
||||
|
||||
public void Attach(IAppBuilder appBuilder)
|
||||
{
|
||||
var nancyOwinHost = new NancyOwinHost(null, _nancyBootstrapper);
|
||||
|
||||
@@ -1,26 +1,31 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Nancy.Bootstrapper;
|
||||
using Nancy.Owin;
|
||||
using Microsoft.AspNet.SignalR;
|
||||
using NzbDrone.Api.SignalR;
|
||||
using Owin;
|
||||
using TinyIoC;
|
||||
|
||||
namespace NzbDrone.Owin.MiddleWare
|
||||
{
|
||||
public class SignalRMiddleWare : IOwinMiddleWare
|
||||
{
|
||||
private readonly INancyBootstrapper _nancyBootstrapper;
|
||||
private readonly IEnumerable<NzbDronePersistentConnection> _persistentConnections;
|
||||
|
||||
public SignalRMiddleWare(INancyBootstrapper nancyBootstrapper)
|
||||
public int Order { get { return 0; } }
|
||||
|
||||
public SignalRMiddleWare(IEnumerable<NzbDronePersistentConnection> persistentConnections, TinyIoCContainer container)
|
||||
{
|
||||
_nancyBootstrapper = nancyBootstrapper;
|
||||
_persistentConnections = persistentConnections;
|
||||
|
||||
SignalrDependencyResolver.Register(container);
|
||||
}
|
||||
|
||||
public void Attach(IAppBuilder appBuilder)
|
||||
{
|
||||
return;
|
||||
var nancyOwinHost = new NancyOwinHost(null, _nancyBootstrapper);
|
||||
appBuilder.Use((Func<Func<IDictionary<string, object>, Task>, Func<IDictionary<string, object>, Task>>)(next => (Func<IDictionary<string, object>, Task>)nancyOwinHost.Invoke), new object[0]);
|
||||
foreach (var nzbDronePersistentConnection in _persistentConnections)
|
||||
{
|
||||
appBuilder.MapConnection("signalr/series", nzbDronePersistentConnection.GetType(), new ConnectionConfiguration { EnableCrossDomain = true });
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,7 @@ using Nancy.Owin;
|
||||
using NzbDrone.Common;
|
||||
using NzbDrone.Owin.MiddleWare;
|
||||
using Owin;
|
||||
using System.Linq;
|
||||
|
||||
namespace NzbDrone.Owin
|
||||
{
|
||||
@@ -27,13 +28,20 @@ namespace NzbDrone.Owin
|
||||
|
||||
public void StartServer()
|
||||
{
|
||||
_host = WebApplication.Start(AppUrl, BuildApp);
|
||||
var options = new StartOptions
|
||||
{
|
||||
App = GetType().AssemblyQualifiedName,
|
||||
Port = _configFileProvider.Port
|
||||
};
|
||||
|
||||
_host = WebApplication.Start(options, BuildApp);
|
||||
}
|
||||
|
||||
private void BuildApp(IAppBuilder appBuilder)
|
||||
{
|
||||
foreach (var middleWare in _owinMiddleWares)
|
||||
foreach (var middleWare in _owinMiddleWares.OrderBy(c => c.Order))
|
||||
{
|
||||
_logger.Debug("Attaching {0} to host", middleWare.GetType().Name);
|
||||
middleWare.Attach(appBuilder);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="FluentMigrator" version="1.0.6.0" targetFramework="net40" />
|
||||
<package id="Microsoft.AspNet.SignalR.Core" version="1.0.1" targetFramework="net40" />
|
||||
<package id="Microsoft.AspNet.SignalR.Owin" version="1.0.1" targetFramework="net40" />
|
||||
<package id="Microsoft.Owin.Host.HttpListener" version="0.21.0-pre" targetFramework="net40" />
|
||||
<package id="Microsoft.Owin.Hosting" version="0.21.0-pre" targetFramework="net40" />
|
||||
<package id="Nancy" version="0.16.1" targetFramework="net40" />
|
||||
<package id="Nancy.Owin" version="0.16.1" targetFramework="net40" />
|
||||
<package id="Newtonsoft.Json" version="4.5.11" targetFramework="net40" />
|
||||
<package id="NLog" version="2.0.1.2" targetFramework="net40" />
|
||||
<package id="NLog.Config" version="2.0.1.2" targetFramework="net40" />
|
||||
<package id="NLog.Schema" version="2.0.1.2" targetFramework="net40" />
|
||||
|
||||
Reference in New Issue
Block a user