From 3dfb8974dd818ea7472921eb5d0d06a9622e5b06 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Tue, 16 Jan 2024 04:52:49 +0200 Subject: [PATCH] improve usage with STJson.TryDeserialize --- src/Jackett.Common/Indexers/FileList.cs | 6 ++---- src/Jackett.Common/Serializer/STJson.cs | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/Jackett.Common/Indexers/FileList.cs b/src/Jackett.Common/Indexers/FileList.cs index 2e81936dd..251efc808 100644 --- a/src/Jackett.Common/Indexers/FileList.cs +++ b/src/Jackett.Common/Indexers/FileList.cs @@ -144,11 +144,9 @@ namespace Jackett.Common.Indexers throw new TooManyRequestsException("Rate limited", indexerResponse); } - if (response.StartsWith("{\"error\"")) + if (response.StartsWith("{\"error\"") && STJson.TryDeserialize(response, out var errorResponse)) { - var error = STJson.Deserialize(response).Error; - - throw new ExceptionWithConfigData(error, configData); + throw new ExceptionWithConfigData(errorResponse.Error, configData); } if (indexerResponse.Status != HttpStatusCode.OK) diff --git a/src/Jackett.Common/Serializer/STJson.cs b/src/Jackett.Common/Serializer/STJson.cs index 59f89d76b..e87acaf9f 100644 --- a/src/Jackett.Common/Serializer/STJson.cs +++ b/src/Jackett.Common/Serializer/STJson.cs @@ -32,5 +32,20 @@ namespace Jackett.Common.Serializer { return JsonSerializer.Deserialize(json, _SerializerSettings); } + + public static bool TryDeserialize(string json, out T result) + where T : new() + { + try + { + result = Deserialize(json); + return true; + } + catch (JsonException) + { + result = default(T); + return false; + } + } } }