From ed1297b71dd7eb75c8e8b2ebc165b8f2c86ef76d Mon Sep 17 00:00:00 2001 From: erri120 Date: Mon, 16 Dec 2019 14:00:22 +0100 Subject: [PATCH] Added error catching for FromJSON to catch NexusAPI error responses --- Wabbajack.Common/Utils.cs | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/Wabbajack.Common/Utils.cs b/Wabbajack.Common/Utils.cs index e7ad01d4..c7d02bf2 100644 --- a/Wabbajack.Common/Utils.cs +++ b/Wabbajack.Common/Utils.cs @@ -394,11 +394,23 @@ namespace Wabbajack.Common return JsonConvert.DeserializeObject(data, new JsonSerializerSettings {TypeNameHandling = handling, TypeNameAssemblyFormatHandling = format}); } + public static T FromJSON(this Stream data) { var s = Encoding.UTF8.GetString(data.ReadAll()); - return JsonConvert.DeserializeObject(s, - new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Auto }); + try + { + return JsonConvert.DeserializeObject(s, + new JsonSerializerSettings {TypeNameHandling = TypeNameHandling.Auto}); + } + catch (JsonSerializationException) + { + var error = JsonConvert.DeserializeObject(s, + new JsonSerializerSettings {TypeNameHandling = TypeNameHandling.Auto}); + if (error != null) + Log($"Exception while deserializing\nError code: {error.code}\nError message: {error.message}"); + throw; + } } public static bool FileExists(this string filename) @@ -958,6 +970,10 @@ namespace Wabbajack.Common return path.ToLower().TrimEnd('\\').StartsWith(parent.ToLower().TrimEnd('\\') + "\\"); } - + public class NexusErrorResponse + { + public int code; + public string message; + } } }