From cc66cee71cae8ffc2f073367dac4ef1e6229d67f Mon Sep 17 00:00:00 2001 From: Bogdan Date: Mon, 31 Jul 2023 10:33:57 +0300 Subject: [PATCH] Fixed: (Apps) Avoid force saving remote indexers when it's not necessary --- .../Applications/Lidarr/LidarrV1Proxy.cs | 14 ++++++++++++-- .../Applications/Radarr/RadarrV3Proxy.cs | 14 ++++++++++++-- .../Applications/Readarr/ReadarrV1Proxy.cs | 14 ++++++++++++-- .../Applications/Sonarr/SonarrV3Proxy.cs | 14 ++++++++++++-- .../Applications/Whisparr/WhisparrV3Proxy.cs | 14 ++++++++++++-- 5 files changed, 60 insertions(+), 10 deletions(-) diff --git a/src/NzbDrone.Core/Applications/Lidarr/LidarrV1Proxy.cs b/src/NzbDrone.Core/Applications/Lidarr/LidarrV1Proxy.cs index 40aeaf3c0..010619216 100644 --- a/src/NzbDrone.Core/Applications/Lidarr/LidarrV1Proxy.cs +++ b/src/NzbDrone.Core/Applications/Lidarr/LidarrV1Proxy.cs @@ -103,10 +103,20 @@ namespace NzbDrone.Core.Applications.Lidarr { var request = BuildRequest(settings, $"{AppIndexerApiRoute}/{indexer.Id}", HttpMethod.Put); - request.Url = request.Url.AddQueryParam("forceSave", "true"); request.SetContent(indexer.ToJson()); - return ExecuteIndexerRequest(request); + try + { + return ExecuteIndexerRequest(request); + } + catch (HttpException ex) when (ex.Response.StatusCode == HttpStatusCode.BadRequest) + { + _logger.Debug("Retrying to update indexer forcefully"); + + request.Url = request.Url.AddQueryParam("forceSave", "true"); + + return ExecuteIndexerRequest(request); + } } public ValidationFailure TestConnection(LidarrIndexer indexer, LidarrSettings settings) diff --git a/src/NzbDrone.Core/Applications/Radarr/RadarrV3Proxy.cs b/src/NzbDrone.Core/Applications/Radarr/RadarrV3Proxy.cs index 6e23077ae..aa5204f68 100644 --- a/src/NzbDrone.Core/Applications/Radarr/RadarrV3Proxy.cs +++ b/src/NzbDrone.Core/Applications/Radarr/RadarrV3Proxy.cs @@ -104,10 +104,20 @@ namespace NzbDrone.Core.Applications.Radarr { var request = BuildRequest(settings, $"{AppIndexerApiRoute}/{indexer.Id}", HttpMethod.Put); - request.Url = request.Url.AddQueryParam("forceSave", "true"); request.SetContent(indexer.ToJson()); - return ExecuteIndexerRequest(request); + try + { + return ExecuteIndexerRequest(request); + } + catch (HttpException ex) when (ex.Response.StatusCode == HttpStatusCode.BadRequest) + { + _logger.Debug("Retrying to update indexer forcefully"); + + request.Url = request.Url.AddQueryParam("forceSave", "true"); + + return ExecuteIndexerRequest(request); + } } public ValidationFailure TestConnection(RadarrIndexer indexer, RadarrSettings settings) diff --git a/src/NzbDrone.Core/Applications/Readarr/ReadarrV1Proxy.cs b/src/NzbDrone.Core/Applications/Readarr/ReadarrV1Proxy.cs index 01302eca7..ae5f5beb2 100644 --- a/src/NzbDrone.Core/Applications/Readarr/ReadarrV1Proxy.cs +++ b/src/NzbDrone.Core/Applications/Readarr/ReadarrV1Proxy.cs @@ -100,10 +100,20 @@ namespace NzbDrone.Core.Applications.Readarr { var request = BuildRequest(settings, $"{AppIndexerApiRoute}/{indexer.Id}", HttpMethod.Put); - request.Url = request.Url.AddQueryParam("forceSave", "true"); request.SetContent(indexer.ToJson()); - return ExecuteIndexerRequest(request); + try + { + return ExecuteIndexerRequest(request); + } + catch (HttpException ex) when (ex.Response.StatusCode == HttpStatusCode.BadRequest) + { + _logger.Debug("Retrying to update indexer forcefully"); + + request.Url = request.Url.AddQueryParam("forceSave", "true"); + + return ExecuteIndexerRequest(request); + } } public ValidationFailure TestConnection(ReadarrIndexer indexer, ReadarrSettings settings) diff --git a/src/NzbDrone.Core/Applications/Sonarr/SonarrV3Proxy.cs b/src/NzbDrone.Core/Applications/Sonarr/SonarrV3Proxy.cs index 19eed7fae..35d4896eb 100644 --- a/src/NzbDrone.Core/Applications/Sonarr/SonarrV3Proxy.cs +++ b/src/NzbDrone.Core/Applications/Sonarr/SonarrV3Proxy.cs @@ -103,10 +103,20 @@ namespace NzbDrone.Core.Applications.Sonarr { var request = BuildRequest(settings, $"{AppIndexerApiRoute}/{indexer.Id}", HttpMethod.Put); - request.Url = request.Url.AddQueryParam("forceSave", "true"); request.SetContent(indexer.ToJson()); - return ExecuteIndexerRequest(request); + try + { + return ExecuteIndexerRequest(request); + } + catch (HttpException ex) when (ex.Response.StatusCode == HttpStatusCode.BadRequest) + { + _logger.Debug("Retrying to update indexer forcefully"); + + request.Url = request.Url.AddQueryParam("forceSave", "true"); + + return ExecuteIndexerRequest(request); + } } public ValidationFailure TestConnection(SonarrIndexer indexer, SonarrSettings settings) diff --git a/src/NzbDrone.Core/Applications/Whisparr/WhisparrV3Proxy.cs b/src/NzbDrone.Core/Applications/Whisparr/WhisparrV3Proxy.cs index c81a6e149..2d1e8a853 100644 --- a/src/NzbDrone.Core/Applications/Whisparr/WhisparrV3Proxy.cs +++ b/src/NzbDrone.Core/Applications/Whisparr/WhisparrV3Proxy.cs @@ -98,10 +98,20 @@ namespace NzbDrone.Core.Applications.Whisparr { var request = BuildRequest(settings, $"{AppIndexerApiRoute}/{indexer.Id}", HttpMethod.Put); - request.Url = request.Url.AddQueryParam("forceSave", "true"); request.SetContent(indexer.ToJson()); - return ExecuteIndexerRequest(request); + try + { + return ExecuteIndexerRequest(request); + } + catch (HttpException ex) when (ex.Response.StatusCode == HttpStatusCode.BadRequest) + { + _logger.Debug("Retrying to update indexer forcefully"); + + request.Url = request.Url.AddQueryParam("forceSave", "true"); + + return ExecuteIndexerRequest(request); + } } public ValidationFailure TestConnection(WhisparrIndexer indexer, WhisparrSettings settings)