refactor parser

This commit is contained in:
FH 2022-04-02 18:43:49 +02:00
parent 2f23ecf7a7
commit 501ddc6b74
3 changed files with 18 additions and 17 deletions

View file

@ -50,7 +50,7 @@
<Compile Include="ViesQuery.cs" /> <Compile Include="ViesQuery.cs" />
<Compile Include="ViesQueryValidator.cs" /> <Compile Include="ViesQueryValidator.cs" />
<Compile Include="ViesResponseView.cs" /> <Compile Include="ViesResponseView.cs" />
<Compile Include="ViesResultParser.cs" /> <Compile Include="ViesResponseParser.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="LICENSE" /> <None Include="LICENSE" />

View file

@ -34,7 +34,7 @@ namespace FCS.Lib.Vies
{ {
public class ViesHttpRequest public class ViesHttpRequest
{ {
//"http://ec.europa.eu/taxation_customs/vies/services/checkVatService" //"http://ec.europa.eu/taxation_customs/vies/services/checkVatService"
public async Task<ViesResponseView> GetResponseAsync(string endpoint, string countryCode, string vatNumber) public async Task<ViesResponseView> GetResponseAsync(string endpoint, string countryCode, string vatNumber)
{ {
var xml = new StringBuilder(); var xml = new StringBuilder();
@ -53,6 +53,7 @@ namespace FCS.Lib.Vies
using var client = new HttpClient(); using var client = new HttpClient();
using var viesRequest = new HttpRequestMessage(HttpMethod.Post, endpoint); using var viesRequest = new HttpRequestMessage(HttpMethod.Post, endpoint);
viesRequest.Headers.Add("SOAPAction", ""); viesRequest.Headers.Add("SOAPAction", "");
viesRequest.Headers.Add("User-Agent", "Innotec Danmark AS - info.innotec.dk");
viesRequest.Content = content; viesRequest.Content = content;
var response = await client.SendAsync(viesRequest).ConfigureAwait(true); var response = await client.SendAsync(viesRequest).ConfigureAwait(true);
var xmlResult = await response.Content.ReadAsStringAsync().ConfigureAwait(true); var xmlResult = await response.Content.ReadAsStringAsync().ConfigureAwait(true);

View file

@ -23,28 +23,28 @@
// </copyright> // </copyright>
// <summary></summary> // <summary></summary>
// *********************************************************************** // ***********************************************************************
using System.Linq; using System.Linq;
using System.Xml.Linq; using System.Xml.Linq;
namespace FCS.Lib.Vies; namespace FCS.Lib.Vies;
public class ViesResultParser public class ViesResponseParser
{ {
public ViesEntityModel ParesViesResult(string xmlData) public ViesEntityModel ParseViesResponse(string xmlData)
{ {
var xmlDoc = XDocument.Parse(xmlData); var xml = XDocument.Parse(xmlData);
var result = (from x in xmlDoc.Root?.Elements("checkVatResponse")
select new ViesEntityModel var x = xml.Descendants().Where(c => c.Name.LocalName == "checkVatResponse")
.Select(x => new ViesEntityModel()
{ {
CountryCode = (string)x.Element("countryCode"), CountryCode = (string)x.Element(x.Name.Namespace + "countryCode"),
VatNumber = (string)x.Element("vatNumber"), VatNumber = (string)x.Element(x.Name.Namespace + "vatNumber"),
RequestDate = (string)x.Element("requestDate"), RequestDate = (string)x.Element(x.Name.Namespace + "requestDate"),
Valid = (bool)x.Element("valid"), Valid = (bool)x.Element(x.Name.Namespace + "valid"),
Name = (string)x.Element("name"), Name = (string)x.Element(x.Name.Namespace + "name"),
Address = (string)x.Element("address") Address = (string)x.Element(x.Name.Namespace + "address")
}).FirstOrDefault(); }).FirstOrDefault();
return x;
return result;
} }
} }