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(); } /// /// Get data with GET method /// /// Waited type of data /// String with API endpoint /// Requested Data /// Error message public async Task GetData(string Endpoint) { string response = await _httpClient.GetStringAsync(Endpoint); try { return JsonConvert.DeserializeObject(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); } /// /// Send data to api with POST method /// /// /// Api Enpoint /// Data for send to API /// Error Message public async void PostData(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); } } /// /// Delete data from Api with DELETE method /// /// Api Endpoint /// Error message 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); } } } }