From daa457cc6b0ada08b6b09a1f20ec19036bd58e52 Mon Sep 17 00:00:00 2001 From: Michel Bagnol Date: Fri, 4 Oct 2019 14:57:25 +0200 Subject: [PATCH] Properly decode the HTML data from the received json response, and decode HTML entities in the org name. --- Imbick.StarCitizen.Api/GetOrgsRestRequest.cs | 1 - Imbick.StarCitizen.Api/Imbick.StarCitizen.Api.csproj | 4 ++-- Imbick.StarCitizen.Api/OrganisationHtmlSerialiser.cs | 2 +- Imbick.StarCitizen.Api/OrganisationsClient.cs | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Imbick.StarCitizen.Api/GetOrgsRestRequest.cs b/Imbick.StarCitizen.Api/GetOrgsRestRequest.cs index 8fc888b..d6f5168 100644 --- a/Imbick.StarCitizen.Api/GetOrgsRestRequest.cs +++ b/Imbick.StarCitizen.Api/GetOrgsRestRequest.cs @@ -2,7 +2,6 @@ using System.Linq; using Models; using RestSharp; - using SimpleJson; public class GetOrgsRestRequest : RestRequest { diff --git a/Imbick.StarCitizen.Api/Imbick.StarCitizen.Api.csproj b/Imbick.StarCitizen.Api/Imbick.StarCitizen.Api.csproj index d3af44f..29f7f8e 100644 --- a/Imbick.StarCitizen.Api/Imbick.StarCitizen.Api.csproj +++ b/Imbick.StarCitizen.Api/Imbick.StarCitizen.Api.csproj @@ -5,8 +5,8 @@ - - + + diff --git a/Imbick.StarCitizen.Api/OrganisationHtmlSerialiser.cs b/Imbick.StarCitizen.Api/OrganisationHtmlSerialiser.cs index bc82f3c..ae77198 100644 --- a/Imbick.StarCitizen.Api/OrganisationHtmlSerialiser.cs +++ b/Imbick.StarCitizen.Api/OrganisationHtmlSerialiser.cs @@ -22,7 +22,7 @@ public Organisation Deserialise(string org) { private Organisation Deserialise(HtmlNode orgNode) { try { return new Organisation { - Name = orgNode.SelectSingleNode("./a[@class=\"trans-03s clearfix\"]/span[2]/span[2]/h3[@class=\"trans-03s name\"]").InnerText, + Name = HtmlEntity.DeEntitize(orgNode.SelectSingleNode("./a[@class=\"trans-03s clearfix\"]/span[2]/span[2]/h3[@class=\"trans-03s name\"]").InnerText), Symbol = orgNode.SelectSingleNode("./a[@class=\"trans-03s clearfix\"]/span[2]/span[2]/span[@class=\"symbol\"]").InnerText, ThumbnailUrl = orgNode.SelectSingleNode("./a[@class=\"trans-03s clearfix\"]/span[2]/span[1]/img").GetAttributeValue("src", string.Empty), Archetype = ToArchetype(orgNode.SelectSingleNode("./a[@class=\"trans-03s clearfix\"]/span[3]/span[1]/span[1]//span[2]").InnerText), diff --git a/Imbick.StarCitizen.Api/OrganisationsClient.cs b/Imbick.StarCitizen.Api/OrganisationsClient.cs index 133d8fd..5c2a364 100644 --- a/Imbick.StarCitizen.Api/OrganisationsClient.cs +++ b/Imbick.StarCitizen.Api/OrganisationsClient.cs @@ -31,7 +31,7 @@ public async Task> GetAsync(SearchRequest searchReques var response = await _client.ExecutePostTaskAsync(request); if (!response.IsSuccessful) throw new Exception($"Request to endpoint was unsuccessful. {response.ErrorMessage}"); - var decodedHtml = response.Data.Data.Html.Replace("\\\"", "\""); //todo properly decode this + var decodedHtml = SimpleJson.DeserializeObject("\"" + response.Data.Data.Html + "\"", SimpleJson.CurrentJsonSerializerStrategy); return _deserialiser.DeserialiseList(decodedHtml); } catch (Exception e) { throw new Exception("Problem retrieving orgs. See inner exception for details.", e);