using BS.Shared.DataContracts; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace BS.Shared.AppSender { public static class AppRequestSender { private static readonly string GETSERVER_URL = "https://support.bewoplaner.de/api/getserver.php?k={0}&t=0"; public static string GetServerFromTenant(string tenant) { #if DEBUG return "localhost:3777"; #endif try { String url = String.Format(GETSERVER_URL, tenant); using (WebClient client = new WebClient()) { //MessageBox.Show(hostAddress); byte[] response = client.UploadValues(url, "POST", new NameValueCollection()); String server = System.Text.Encoding.ASCII.GetString(response); return server; } } catch (Exception ex) { return null; } } public static Res Send(Req request, string url, string tenant = null) where Req : AppRequestDC where Res : AppResponseDC { if (tenant != null) request.Tenant = tenant; var data = JsonConvert.SerializeObject(request); var response_app8_str = Send(url, data, request.Tenant); if (string.IsNullOrEmpty(response_app8_str)) return null; return JsonConvert.DeserializeObject(response_app8_str); } public static async Task SendAsync(Req request, string url, string tenant, long? useroid = null) where Req : AppRequestDC where Res : AppResponseDC { request.Tenant = tenant; var data = JsonConvert.SerializeObject(request); var response_app8_str = await SendAsync(url, data, tenant, useroid); if (string.IsNullOrEmpty(response_app8_str)) return null; return JsonConvert.DeserializeObject(response_app8_str); } private static string Send(string url, string dataString, string tenant) { string response_app8_str; url += "?tenant=" + tenant; using (WebClient client = new WebClient()) { client.Encoding = Encoding.UTF8; client.Headers.Add(HttpRequestHeader.ContentType, "application/json"); response_app8_str = client.UploadString(url, "POST", dataString); } return response_app8_str; } private static async Task SendAsync(string url, string dataString, string tenant, long? useroid = null) { string response; url += "?tenant=" + tenant; if (useroid.HasValue) url += "&user=" + useroid.Value; using (WebClient client = new WebClient()) { client.Encoding = Encoding.UTF8; client.Headers.Add(HttpRequestHeader.ContentType, "application/json"); response = await client.UploadStringTaskAsync(url, "POST", dataString); } return response; } } }