mirror of
https://github.com/Radarr/Radarr.git
synced 2024-10-05 15:47:20 +02:00
Add error handling to Notifiarr connect to reduce Sentry hits
Add Environment switch to Notifiarr connect Add Instance Name to Notifiarr connect
This commit is contained in:
parent
7ec0fd1cea
commit
8ae84222d1
@ -0,0 +1,8 @@
|
|||||||
|
namespace NzbDrone.Core.Notifications.Notifiarr
|
||||||
|
{
|
||||||
|
public enum NotifiarrEnvironment
|
||||||
|
{
|
||||||
|
Live,
|
||||||
|
Development
|
||||||
|
}
|
||||||
|
}
|
@ -15,7 +15,6 @@ public interface INotifiarrProxy
|
|||||||
|
|
||||||
public class NotifiarrProxy : INotifiarrProxy
|
public class NotifiarrProxy : INotifiarrProxy
|
||||||
{
|
{
|
||||||
private const string URL = "https://notifiarr.com/notifier.php";
|
|
||||||
private readonly IHttpClient _httpClient;
|
private readonly IHttpClient _httpClient;
|
||||||
private readonly Logger _logger;
|
private readonly Logger _logger;
|
||||||
|
|
||||||
@ -50,10 +49,19 @@ public ValidationFailure Test(NotifiarrSettings settings)
|
|||||||
}
|
}
|
||||||
catch (HttpException ex)
|
catch (HttpException ex)
|
||||||
{
|
{
|
||||||
if (ex.Response.StatusCode == HttpStatusCode.Unauthorized)
|
switch ((int)ex.Response.StatusCode)
|
||||||
{
|
{
|
||||||
_logger.Error(ex, "API key is invalid: " + ex.Message);
|
case 401:
|
||||||
return new ValidationFailure("APIKey", "API key is invalid");
|
_logger.Error(ex, "API key is invalid: " + ex.Message);
|
||||||
|
return new ValidationFailure("APIKey", "API key is invalid");
|
||||||
|
case 400:
|
||||||
|
case 520:
|
||||||
|
case 521:
|
||||||
|
case 522:
|
||||||
|
case 523:
|
||||||
|
case 524:
|
||||||
|
_logger.Error(ex, "Unable to send test notification: " + ex.Message);
|
||||||
|
return new ValidationFailure("", "Unable to send test notification");
|
||||||
}
|
}
|
||||||
|
|
||||||
_logger.Error(ex, "Unable to send test message: " + ex.Message);
|
_logger.Error(ex, "Unable to send test message: " + ex.Message);
|
||||||
@ -70,8 +78,10 @@ private void ProcessNotification(StringDictionary message, NotifiarrSettings set
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var requestBuilder = new HttpRequestBuilder(URL).Post();
|
var url = settings.Environment == (int)NotifiarrEnvironment.Development ? "https://dev.notifiarr.com" : "https://notifiarr.com";
|
||||||
|
var requestBuilder = new HttpRequestBuilder(url + "/notifier.php").Post();
|
||||||
requestBuilder.AddFormParameter("api", settings.APIKey).Build();
|
requestBuilder.AddFormParameter("api", settings.APIKey).Build();
|
||||||
|
requestBuilder.AddFormParameter("instanceName", settings.InstanceName).Build();
|
||||||
|
|
||||||
foreach (string key in message.Keys)
|
foreach (string key in message.Keys)
|
||||||
{
|
{
|
||||||
@ -84,10 +94,19 @@ private void ProcessNotification(StringDictionary message, NotifiarrSettings set
|
|||||||
}
|
}
|
||||||
catch (HttpException ex)
|
catch (HttpException ex)
|
||||||
{
|
{
|
||||||
if (ex.Response.StatusCode == HttpStatusCode.BadRequest)
|
switch ((int)ex.Response.StatusCode)
|
||||||
{
|
{
|
||||||
_logger.Error(ex, "API key is invalid");
|
case 401:
|
||||||
throw;
|
_logger.Error(ex, "API key is invalid");
|
||||||
|
throw;
|
||||||
|
case 400:
|
||||||
|
case 520:
|
||||||
|
case 521:
|
||||||
|
case 522:
|
||||||
|
case 523:
|
||||||
|
case 524:
|
||||||
|
_logger.Error(ex, "Unable to send notification");
|
||||||
|
throw;
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new NotifiarrException("Unable to send notification", ex);
|
throw new NotifiarrException("Unable to send notification", ex);
|
||||||
|
@ -19,6 +19,10 @@ public class NotifiarrSettings : IProviderConfig
|
|||||||
|
|
||||||
[FieldDefinition(0, Label = "API Key", Privacy = PrivacyLevel.ApiKey, HelpText = "Your API key from your profile", HelpLink = "https://notifiarr.com")]
|
[FieldDefinition(0, Label = "API Key", Privacy = PrivacyLevel.ApiKey, HelpText = "Your API key from your profile", HelpLink = "https://notifiarr.com")]
|
||||||
public string APIKey { get; set; }
|
public string APIKey { get; set; }
|
||||||
|
[FieldDefinition(1, Label = "Instance Name", Advanced = true, HelpText = "Unique name for this instance", HelpLink = "https://notifiarr.com")]
|
||||||
|
public string InstanceName { get; set; }
|
||||||
|
[FieldDefinition(2, Label = "Environment", Advanced = true, Type = FieldType.Select, SelectOptions = typeof(NotifiarrEnvironment), HelpText = "Live unless told otherwise", HelpLink = "https://notifiarr.com")]
|
||||||
|
public int Environment { get; set; }
|
||||||
|
|
||||||
public NzbDroneValidationResult Validate()
|
public NzbDroneValidationResult Validate()
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user