180 lines
5.9 KiB
C#
180 lines
5.9 KiB
C#
using Newtonsoft.Json;
|
|
using System.Net;
|
|
using System.Text;
|
|
|
|
namespace Wrapper_Api_SequentMicrosystems.Main
|
|
{
|
|
internal class ApiClient
|
|
{
|
|
private HttpClient _httpClient;
|
|
|
|
|
|
public ApiClient()
|
|
{
|
|
_httpClient = new HttpClient();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Get data with GET method
|
|
/// </summary>
|
|
/// <typeparam name="Type"> Waited type of data</typeparam>
|
|
/// <param name="Endpoint">String with API endpoint</param>
|
|
/// <returns>Requested Data</returns>
|
|
/// <exception cref="Exception">Error message</exception>
|
|
public async Task<Type?> GetData<Type>(string Endpoint)
|
|
{
|
|
string response = await _httpClient.GetStringAsync(Endpoint);
|
|
|
|
try
|
|
{
|
|
return JsonConvert.DeserializeObject<Type>(response);//await response.Content.ReadAsStringAsync());
|
|
}
|
|
catch (WebException exc)
|
|
{
|
|
Console.WriteLine("Network Error: " + exc.Message + "\nStatus code: " + exc.Status);
|
|
}
|
|
catch (ProtocolViolationException exc)
|
|
{
|
|
Console.WriteLine("Protocol Error: " + exc.Message);
|
|
}
|
|
catch (UriFormatException exc)
|
|
{
|
|
Console.WriteLine("URI Format Error: " + exc.Message);
|
|
}
|
|
catch (NotSupportedException exc)
|
|
{
|
|
Console.WriteLine("Unknown Protocol: " + exc.Message);
|
|
}
|
|
catch (IOException exc)
|
|
{
|
|
Console.WriteLine("I/O Error: " + exc.Message);
|
|
}
|
|
catch (System.Security.SecurityException exc)
|
|
{
|
|
Console.WriteLine("Security Exception: " + exc.Message);
|
|
}
|
|
catch (InvalidOperationException exc)
|
|
{
|
|
Console.WriteLine("Invalid Operation: " + exc.Message);
|
|
}
|
|
catch (HttpRequestException exc)
|
|
{
|
|
Console.WriteLine("Invalid Operation: " + exc.Message);
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
Console.WriteLine("Invalid Operation: " + exc.Message);
|
|
}
|
|
return default(Type);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Send data to api with POST method
|
|
/// </summary>
|
|
/// <typeparam name="Type"></typeparam>
|
|
/// <param name="Endpoint">Api Enpoint</param>
|
|
/// <param name="data">Data for send to API</param>
|
|
/// <exception cref="Exception">Error Message</exception>
|
|
public async void PostData<Type>(string Endpoint, Type data)
|
|
{
|
|
StringContent sc = new(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json");
|
|
|
|
try
|
|
{
|
|
HttpResponseMessage response = await _httpClient.PostAsync(new Uri(Endpoint), sc);
|
|
}
|
|
catch (WebException exc)
|
|
{
|
|
Console.WriteLine("Network Error: " + exc.Message + "\nStatus code: " + exc.Status);
|
|
}
|
|
catch (ProtocolViolationException exc)
|
|
{
|
|
Console.WriteLine("Protocol Error: " + exc.Message);
|
|
}
|
|
catch (UriFormatException exc)
|
|
{
|
|
Console.WriteLine("URI Format Error: " + exc.Message);
|
|
}
|
|
catch (NotSupportedException exc)
|
|
{
|
|
Console.WriteLine("Unknown Protocol: " + exc.Message);
|
|
}
|
|
catch (IOException exc)
|
|
{
|
|
Console.WriteLine("I/O Error: " + exc.Message);
|
|
}
|
|
catch (System.Security.SecurityException exc)
|
|
{
|
|
Console.WriteLine("Security Exception: " + exc.Message);
|
|
}
|
|
catch (InvalidOperationException exc)
|
|
{
|
|
Console.WriteLine("Invalid Operation: " + exc.Message);
|
|
}
|
|
catch (HttpRequestException exc)
|
|
{
|
|
Console.WriteLine("Invalid Operation: " + exc.Message);
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
Console.WriteLine("Invalid Operation: " + exc.Message);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Delete data from Api with DELETE method
|
|
/// </summary>
|
|
/// <param name="Endpoint">Api Endpoint</param>
|
|
/// <exception cref="Exception">Error message</exception>
|
|
public async void DeleteData(string Endpoint)
|
|
{
|
|
try
|
|
{
|
|
await _httpClient.DeleteAsync(new Uri(Endpoint));
|
|
}
|
|
catch (WebException exc)
|
|
{
|
|
Console.WriteLine("Network Error: " + exc.Message + "\nStatus code: " + exc.Status);
|
|
}
|
|
catch (ProtocolViolationException exc)
|
|
{
|
|
Console.WriteLine("Protocol Error: " + exc.Message);
|
|
}
|
|
catch (UriFormatException exc)
|
|
{
|
|
Console.WriteLine("URI Format Error: " + exc.Message);
|
|
}
|
|
catch (NotSupportedException exc)
|
|
{
|
|
Console.WriteLine("Unknown Protocol: " + exc.Message);
|
|
}
|
|
catch (IOException exc)
|
|
{
|
|
Console.WriteLine("I/O Error: " + exc.Message);
|
|
}
|
|
catch (System.Security.SecurityException exc)
|
|
{
|
|
Console.WriteLine("Security Exception: " + exc.Message);
|
|
}
|
|
catch (InvalidOperationException exc)
|
|
{
|
|
Console.WriteLine("Invalid Operation: " + exc.Message);
|
|
}
|
|
catch (HttpRequestException exc)
|
|
{
|
|
Console.WriteLine("Invalid Operation: " + exc.Message);
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
Console.WriteLine("Invalid Operation: " + exc.Message);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|