Files
BeWoPlaner/Shared/AppSender/AppRequestSender.cs
Rene Evertz 004a5ecb38 Gkv Summen Abfrage fertig - SQL Statements als einzelne File für bessere Lesbarkeit
- Einfach als Embedded Ressource beim Build Vorgang wählen und durch SearchDAO.LoadSQLStatement verwenden
2025-02-05 15:29:44 +01:00

110 lines
2.7 KiB
C#

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, Res>(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<Res>(response_app8_str);
}
public static async Task<Res> SendAsync<Req, Res>(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<Res>(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<string> 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;
}
}
}