From 16ae7fd2b64a697d36945c4955d781e9edaa1892 Mon Sep 17 00:00:00 2001 From: Lucca Faria Ferri Date: Sun, 29 Jan 2023 08:29:02 -0800 Subject: [PATCH] Login exception handling (JSON deserialize) --- src/DiIiS-NA/REST/JSON/Json.cs | 16 ++++++++++++---- src/DiIiS-NA/REST/RestSession.cs | 11 ++++++----- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/DiIiS-NA/REST/JSON/Json.cs b/src/DiIiS-NA/REST/JSON/Json.cs index 90ac3b8..8ebf231 100644 --- a/src/DiIiS-NA/REST/JSON/Json.cs +++ b/src/DiIiS-NA/REST/JSON/Json.cs @@ -12,7 +12,7 @@ namespace DiIiS_NA.REST.JSON { public class Json { - private static readonly Logger _logger = LogManager.CreateLogger(nameof(Json)); + private static readonly Logger Logger = LogManager.CreateLogger(nameof(Json)); public static string CreateString(T dataObject) { return Encoding.UTF8.GetString(CreateArray(dataObject)); @@ -37,14 +37,22 @@ namespace DiIiS_NA.REST.JSON } catch (Exception ex) { - _logger.FatalException(ex, "Could not deserialize JSON data"); - return default(T); + Logger.FatalException(ex, "Could not deserialize JSON data"); + return default; } } public static T CreateObject(string jsonData, bool split = false) { - return CreateObject(Encoding.UTF8.GetBytes(split ? jsonData.Split(new[] { ':' }, 2)[1] : jsonData)); + try + { + return CreateObject(Encoding.UTF8.GetBytes(split ? jsonData.Split(new[] { ':' }, 2)[1] : jsonData)); + } + catch (Exception ex) + { + Logger.FatalException(ex, "Could not deserialize JSON data"); + return default; + } } public static T CreateObject(byte[] jsonData) => CreateObject(new MemoryStream(jsonData)); diff --git a/src/DiIiS-NA/REST/RestSession.cs b/src/DiIiS-NA/REST/RestSession.cs index db9801f..f5886bb 100644 --- a/src/DiIiS-NA/REST/RestSession.cs +++ b/src/DiIiS-NA/REST/RestSession.cs @@ -16,6 +16,7 @@ using System.IO; using System.Net.Security; using System.Web; using DiIiS_NA.GameServer.MessageSystem; +using DiIiS_NA.REST.Data.Forms; namespace DiIiS_NA.REST { @@ -110,7 +111,7 @@ namespace DiIiS_NA.REST { LogonData loginForm = Json.CreateObject(request.Content); LogonResult loginResult = new LogonResult(); - if (loginForm == default(LogonData)) + if (loginForm?.Inputs is null or {Count: 0}) { loginResult.AuthenticationState = "LOGIN"; loginResult.ErrorCode = "UNABLE_TO_DECODE"; @@ -122,15 +123,15 @@ namespace DiIiS_NA.REST string login = ""; string password = ""; - for (int i = 0; i < loginForm.Inputs.Count; ++i) + foreach (var input in loginForm.Inputs) { - switch (loginForm.Inputs[i].Id) + switch (input.Id) { case "account_name": - login = loginForm.Inputs[i].Value; + login = input.Value; break; case "password": - password = loginForm.Inputs[i].Value; + password = input.Value; break; } }