using Microsoft.AspNetCore.Components.Authorization; namespace OrdersManagement.Services; public class ServiceBase where T : class { private readonly CustomAuthenticationStateProvider _authenticationStateProvider; private readonly HttpClient _httpClient; protected ServiceBase(IHttpClientFactory httpClientFactory, CustomAuthenticationStateProvider authenticationStateProvider) { _authenticationStateProvider = authenticationStateProvider; _httpClient = httpClientFactory.CreateClient("FaKrosnoApi"); } protected async Task?> GetListAsync(string request) { //Configure(); var response = await _httpClient.GetAsync(request); response.EnsureSuccessStatusCode(); return await response.Content.ReadFromJsonAsync>(); } protected async Task GetEntityAsync(string request) { //Configure(); var response = await _httpClient.GetAsync(request); response.EnsureSuccessStatusCode(); return await response.Content.ReadFromJsonAsync(); } protected async Task PostAsync(string request) { //Configure(); var response = await _httpClient.PostAsync(request, null); response.EnsureSuccessStatusCode(); return response; } protected async Task PostAsJsonAsync(string request, T obj) { //Configure(); var response = await _httpClient.PostAsJsonAsync(request, obj); response.EnsureSuccessStatusCode(); return response; } protected async Task PostAsJsonAsync(string request, object obj) { //Configure(); var response = await _httpClient.PostAsJsonAsync(request, obj); response.EnsureSuccessStatusCode(); return response; } protected async Task PutAsJsonAsync(string request, T obj) { //Configure(); var response = await _httpClient.PutAsJsonAsync(request, obj); response.EnsureSuccessStatusCode(); return response; } protected async Task DeleteAsync(string request) { //Configure(); var response = await _httpClient.DeleteAsync(request); response.EnsureSuccessStatusCode(); return response; } private void Configure() { var token = _authenticationStateProvider.GetToken(); _httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token); } }