mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-20 21:43:33 -07:00
XbmcProvider updated to include new Json API methods.
EventClient is used for sending CleanLibrary and Notifications (With NzbDrone Logo - Internal Resource). Support for Dharma's HTTP Server (Deprecated), since Dharma doesn't support Json as well.
This commit is contained in:
parent
5bbc9a6f59
commit
348ff5a386
26 changed files with 1312 additions and 158 deletions
69
NzbDrone.Core/Providers/Xbmc/EventClientProvider.cs
Normal file
69
NzbDrone.Core/Providers/Xbmc/EventClientProvider.cs
Normal file
|
@ -0,0 +1,69 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Ninject;
|
||||
using NzbDrone.Core.Providers.Core;
|
||||
using NzbDrone.Core.Model.Xbmc;
|
||||
|
||||
namespace NzbDrone.Core.Providers.Xbmc
|
||||
{
|
||||
public class EventClientProvider
|
||||
{
|
||||
private readonly UdpProvider _udpProvider;
|
||||
|
||||
[Inject]
|
||||
public EventClientProvider(UdpProvider udpProvider)
|
||||
{
|
||||
_udpProvider = udpProvider;
|
||||
}
|
||||
|
||||
public EventClientProvider()
|
||||
{
|
||||
}
|
||||
|
||||
public virtual bool SendNotification(string caption, string message, IconType iconType, string iconFile, string address)
|
||||
{
|
||||
byte[] icon = new byte[0];
|
||||
if (iconType != IconType.None)
|
||||
{
|
||||
icon = ResourceManager.GetRawLogo(iconFile);
|
||||
}
|
||||
|
||||
byte[] payload = new byte[caption.Length + message.Length + 7 + icon.Length];
|
||||
|
||||
int offset = 0;
|
||||
|
||||
for (int i = 0; i < caption.Length; i++)
|
||||
payload[offset++] = (byte)caption[i];
|
||||
payload[offset++] = (byte)'\0';
|
||||
|
||||
for (int i = 0; i < message.Length; i++)
|
||||
payload[offset++] = (byte)message[i];
|
||||
payload[offset++] = (byte)'\0';
|
||||
|
||||
payload[offset++] = (byte)iconType;
|
||||
|
||||
for (int i = 0; i < 4; i++)
|
||||
payload[offset++] = (byte)0;
|
||||
|
||||
Array.Copy(icon, 0, payload, caption.Length + message.Length + 7, icon.Length);
|
||||
|
||||
return _udpProvider.Send(address, UdpProvider.PacketType.Notification, payload);
|
||||
}
|
||||
|
||||
public virtual bool SendAction(string address, ActionType action, string messages)
|
||||
{
|
||||
var payload = new byte[messages.Length + 2];
|
||||
int offset = 0;
|
||||
payload[offset++] = (byte)action;
|
||||
|
||||
for (int i = 0; i < messages.Length; i++)
|
||||
payload[offset++] = (byte)messages[i];
|
||||
|
||||
payload[offset++] = (byte)'\0';
|
||||
|
||||
return _udpProvider.Send(address, UdpProvider.PacketType.Action, payload);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue