diff --git a/Service/ServiceUtils/XRechnung/XRechnungSender.cs b/Service/ServiceUtils/XRechnung/XRechnungSender.cs index 639857ad5..e7f645af8 100644 --- a/Service/ServiceUtils/XRechnung/XRechnungSender.cs +++ b/Service/ServiceUtils/XRechnung/XRechnungSender.cs @@ -4,6 +4,7 @@ using BS.Shared.DataContracts.Invoicing.XRechnung; using System; using System.Collections.Generic; using System.Linq; +using System.Net.Http; using System.Text; using System.Threading.Tasks; @@ -11,20 +12,49 @@ namespace BeWo.Service.ServiceUtils.XRechnung { public static class XRechnungSender { - public static string Send(string url, XRechnungRequest req) + private static readonly string XRECHNUNG_SERVER_URL = "https://test2.evplaner.de/xrg/create"; + + public static string Send(XRechnungRequest request) { - var data = req.ToData(); + var dict = request.ToDict(); - var response = Send(url, data); + var response = GetResponse(dict); - return response; + if (response is null) + return null; + + var test_str = Encoding.UTF8.GetString(response); + + return test_str; } - public static string Send(string url, string data) + private static byte[] GetResponse(IEnumerable> kvp) { - var response = OwnSoftSender.SendFormUrlEncoded(url, data); + HttpResponseMessage response; + using (var httpClient = new HttpClient()) + { + using (var content = new FormUrlEncodedContent(kvp)) + { + content.Headers.Clear(); + content.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); - return response; + var task = Task.Run(() => httpClient.PostAsync(XRECHNUNG_SERVER_URL, content)); + task.Wait(); + response = task.Result; + } + } + + if (response is null) + return null; + + if (!response.IsSuccessStatusCode) + return null; + + var task2 = Task.Run(() => response.Content.ReadAsByteArrayAsync()); + + task2.Wait(); + + return task2.Result; } } } diff --git a/Shared/AppSender/OwnSoftSender.cs b/Shared/AppSender/OwnSoftSender.cs index 02aa7b965..5f003d6b3 100644 --- a/Shared/AppSender/OwnSoftSender.cs +++ b/Shared/AppSender/OwnSoftSender.cs @@ -10,20 +10,6 @@ namespace BS.Shared.AppSender { public static class OwnSoftSender { - public static string SendFormUrlEncoded(string url, string dataString) - { - string response; - using (WebClient client = new WebClient()) - { - client.Encoding = Encoding.UTF8; - - client.Headers.Add(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded"); - - response = client.UploadString(url, "POST", dataString); - } - - return response; - } } } diff --git a/Shared/DataContracts/Invoicing/XRechnung/XRechnungRequest.cs b/Shared/DataContracts/Invoicing/XRechnung/XRechnungRequest.cs index abddc554e..f72587295 100644 --- a/Shared/DataContracts/Invoicing/XRechnung/XRechnungRequest.cs +++ b/Shared/DataContracts/Invoicing/XRechnung/XRechnungRequest.cs @@ -14,14 +14,16 @@ namespace BS.Shared.DataContracts.Invoicing.XRechnung public string Url { get; set; } - public string ToData() + public Dictionary ToDict() { - var json = $"json={XRechnung}"; + var dict = new Dictionary(); - if (string.IsNullOrEmpty(Url)) - return json; + dict.Add("json", XRechnung); - return json + $"&pdf={Url}"; + if (!string.IsNullOrEmpty(Url)) + dict.Add("pdf", Url); + + return dict; } } } diff --git a/XRechnungUnitTest/UnitTest1.cs b/XRechnungUnitTest/UnitTest1.cs index b1c93f7f1..63299966b 100644 --- a/XRechnungUnitTest/UnitTest1.cs +++ b/XRechnungUnitTest/UnitTest1.cs @@ -23,37 +23,33 @@ namespace XRechnungUnitTest var txt = JsonConvert.SerializeObject(xr); } - [TestMethod] - public void SendTest() - { - var url = "https://test2.evplaner.de/xrg/create"; + //[TestMethod] + //public void SendTest() + //{ + // var json = File.ReadAllText("invoicetest.json", System.Text.Encoding.UTF8); - var json = File.ReadAllText("invoicetest.json", System.Text.Encoding.UTF8); + // var xr = JsonConvert.DeserializeObject(json); - var xr = JsonConvert.DeserializeObject(json); + // var xrr = JsonConvert.SerializeObject(xr); - var xrr = JsonConvert.SerializeObject(xr); + // //var req = new XRechnungRequest(); - //var req = new XRechnungRequest(); + // //req.Json = xr; - //req.Json = xr; + // //var txt = JsonConvert.SerializeObject(req); - //var txt = JsonConvert.SerializeObject(req); + // //xrr = xrr.Replace("ä", "ae").Replace("ö", "oe").Replace("ü", "ue").Replace("ß", "ss"); - //xrr = xrr.Replace("ä", "ae").Replace("ö", "oe").Replace("ü", "ue").Replace("ß", "ss"); + // var txt = $"json={xrr}"; - var txt = $"json={xrr}"; + // var response = XRechnungSender.Send(); - var response = OwnSoftSender.SendFormUrlEncoded(url, txt); - - Assert.IsTrue(!string.IsNullOrWhiteSpace(response) && !response.ToLower().Contains("error")); - } + // Assert.IsTrue(!string.IsNullOrWhiteSpace(response) && !response.ToLower().Contains("error")); + //} [TestMethod] public void SendTestAsRequest() { - var url = "https://test2.evplaner.de/xrg/create"; - var json = File.ReadAllText("invoicetest.json", System.Text.Encoding.UTF8); var xr = JsonConvert.DeserializeObject(json); @@ -63,7 +59,7 @@ namespace XRechnungUnitTest req.XRechnung = xrr; - var response = XRechnungSender.Send(url, req); + var response = XRechnungSender.Send(req); Assert.IsTrue(!string.IsNullOrWhiteSpace(response) && !response.ToLower().Contains("error")); } @@ -71,8 +67,6 @@ namespace XRechnungUnitTest [TestMethod] public void SendTestWithUrl() { - var url = "https://test2.evplaner.de/xrg/create"; - var json = File.ReadAllText("invoicetest.json", System.Text.Encoding.UTF8); var xr = JsonConvert.DeserializeObject(json); @@ -83,7 +77,7 @@ namespace XRechnungUnitTest req.XRechnung = xrr; req.Url = Uri.EscapeDataString("https://app5.bewoplaner.de/service/DownloadFile.aspx?key=jhkf4589141324h6543958"); - var response = XRechnungSender.Send(url, req); + var response = XRechnungSender.Send(req); Assert.IsTrue(!string.IsNullOrWhiteSpace(response) && !response.ToLower().Contains("error")); }