mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2025-09-26 20:11:49 +02:00
41
src/NzbDrone.Core/Notifications/Webhook/WebhookProxy.cs
Executable file
41
src/NzbDrone.Core/Notifications/Webhook/WebhookProxy.cs
Executable file
@@ -0,0 +1,41 @@
|
||||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Common.Serializer;
|
||||
using NzbDrone.Core.Rest;
|
||||
|
||||
namespace NzbDrone.Core.Notifications.Webhook
|
||||
{
|
||||
public interface IWebhookProxy
|
||||
{
|
||||
void SendWebhook(WebhookPayload payload, WebhookSettings settings);
|
||||
}
|
||||
|
||||
class WebhookProxy : IWebhookProxy
|
||||
{
|
||||
private readonly IHttpClient _httpClient;
|
||||
|
||||
public WebhookProxy(IHttpClient httpClient)
|
||||
{
|
||||
_httpClient = httpClient;
|
||||
}
|
||||
|
||||
public void SendWebhook(WebhookPayload body, WebhookSettings settings)
|
||||
{
|
||||
try
|
||||
{
|
||||
var request = new HttpRequestBuilder(settings.Url)
|
||||
.Accept(HttpAccept.Json)
|
||||
.Build();
|
||||
|
||||
request.Method = (HttpMethod)settings.Method;
|
||||
request.Headers.ContentType = "application/json";
|
||||
request.SetContent(body.ToJson());
|
||||
|
||||
_httpClient.Execute(request);
|
||||
}
|
||||
catch (RestException ex)
|
||||
{
|
||||
throw new WebhookException("Unable to post to webhook: {0}", ex, ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user