Sonarr/src/NzbDrone.SignalR/NzbDronePersistentConnectio...

41 lines
1.1 KiB
C#
Raw Normal View History

2017-07-26 14:09:22 +00:00
using Microsoft.AspNet.SignalR;
2013-09-11 06:33:47 +00:00
using Microsoft.AspNet.SignalR.Infrastructure;
2017-07-26 14:09:22 +00:00
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Configuration;
2013-09-11 06:33:47 +00:00
namespace NzbDrone.SignalR
{
public interface IBroadcastSignalRMessage
{
void BroadcastMessage(SignalRMessage message);
}
public sealed class NzbDronePersistentConnection : PersistentConnection, IBroadcastSignalRMessage
2013-09-11 06:33:47 +00:00
{
2016-12-09 06:54:15 +00:00
private IPersistentConnectionContext Context => ((ConnectionManager)GlobalHost.ConnectionManager).GetConnection(GetType());
2013-09-11 06:33:47 +00:00
2017-07-26 14:09:22 +00:00
private static string API_KEY;
public NzbDronePersistentConnection(IConfigFileProvider configFileProvider)
{
API_KEY = configFileProvider.ApiKey;
}
public void BroadcastMessage(SignalRMessage message)
2013-09-11 06:33:47 +00:00
{
Context.Connection.Broadcast(message);
2013-09-11 06:33:47 +00:00
}
2017-07-26 14:09:22 +00:00
protected override bool AuthorizeRequest(IRequest request)
{
var apiKey = request.QueryString["apiKey"];
if (apiKey.IsNotNullOrWhiteSpace() && apiKey.Equals(API_KEY))
{
return true;
}
return false;
}
2013-09-11 06:33:47 +00:00
}
}