using System.Net.Http.Formatting; using System.Net.Http.Json; using System.Text.Json; namespace TwitchChatTTS.Helpers { public class WebClientWrap { private readonly HttpClient _client; public JsonSerializerOptions Options { get; } public WebClientWrap(JsonSerializerOptions options) { _client = new HttpClient(); Options = options; } public void AddHeader(string key, string? value) { if (_client.DefaultRequestHeaders.Contains(key)) _client.DefaultRequestHeaders.Remove(key); _client.DefaultRequestHeaders.Add(key, value); } public async Task GetJson(string uri, JsonSerializerOptions? options = null) { var response = await _client.GetAsync(uri); return JsonSerializer.Deserialize(await response.Content.ReadAsStreamAsync(), options ?? Options); } public async Task Get(string uri) { return await _client.GetAsync(uri); } public async Task Post(string uri, T data) { return await _client.PostAsJsonAsync(uri, data, Options); } public async Task Post(string uri) { return await _client.PostAsJsonAsync(uri, new object(), Options); } public async Task Put(string uri, T data) { return await _client.PutAsJsonAsync(uri, data, Options); } public async Task Delete(string uri) { return await _client.DeleteFromJsonAsync(uri, Options); } public async Task Delete(string uri) { return await _client.DeleteAsync(uri); } } }