You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
2.4 KiB
70 lines
2.4 KiB
using System.Net.Http;
|
|
using NzbDrone.Common.Http;
|
|
using NzbDrone.Common.Serializer;
|
|
using NzbDrone.Core.Notifications.Webhook;
|
|
|
|
namespace NzbDrone.Core.Notifications.Notifiarr
|
|
{
|
|
public interface INotifiarrProxy
|
|
{
|
|
void SendNotification(WebhookPayload payload, NotifiarrSettings settings);
|
|
}
|
|
|
|
public class NotifiarrProxy : INotifiarrProxy
|
|
{
|
|
private const string URL = "https://notifiarr.com";
|
|
private readonly IHttpClient _httpClient;
|
|
|
|
public NotifiarrProxy(IHttpClient httpClient)
|
|
{
|
|
_httpClient = httpClient;
|
|
}
|
|
|
|
public void SendNotification(WebhookPayload payload, NotifiarrSettings settings)
|
|
{
|
|
ProcessNotification(payload, settings);
|
|
}
|
|
|
|
private void ProcessNotification(WebhookPayload payload, NotifiarrSettings settings)
|
|
{
|
|
try
|
|
{
|
|
var request = new HttpRequestBuilder(URL + "/api/v1/notification/lidarr")
|
|
.Accept(HttpAccept.Json)
|
|
.SetHeader("X-API-Key", settings.APIKey)
|
|
.Build();
|
|
|
|
request.Method = HttpMethod.Post;
|
|
|
|
request.Headers.ContentType = "application/json";
|
|
request.SetContent(payload.ToJson());
|
|
|
|
_httpClient.Post(request);
|
|
}
|
|
catch (HttpException ex)
|
|
{
|
|
var responseCode = ex.Response.StatusCode;
|
|
switch ((int)responseCode)
|
|
{
|
|
case 401:
|
|
throw new NotifiarrException("API key is invalid");
|
|
case 400:
|
|
throw new NotifiarrException("Unable to send notification. Ensure Lidarr Integration is enabled & assigned a channel on Notifiarr");
|
|
case 502:
|
|
case 503:
|
|
case 504:
|
|
throw new NotifiarrException("Unable to send notification. Service Unavailable", ex);
|
|
case 520:
|
|
case 521:
|
|
case 522:
|
|
case 523:
|
|
case 524:
|
|
throw new NotifiarrException("Cloudflare Related HTTP Error - Unable to send notification", ex);
|
|
default:
|
|
throw new NotifiarrException("Unknown HTTP Error - Unable to send notification", ex);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|