Files
FA_WEB/OrdersManagement/Services/ServiceBase.cs
2025-02-28 13:33:01 +01:00

86 lines
2.6 KiB
C#

using Microsoft.AspNetCore.Components.Authorization;
namespace OrdersManagement.Services;
public class ServiceBase<T> 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<IEnumerable<T>?> GetListAsync(string request)
{
Configure();
var response = await _httpClient.GetAsync(request);
response.EnsureSuccessStatusCode();
return await response.Content.ReadFromJsonAsync<IEnumerable<T>>();
}
protected async Task<T?> GetEntityAsync(string request)
{
Configure();
var response = await _httpClient.GetAsync(request);
response.EnsureSuccessStatusCode();
return await response.Content.ReadFromJsonAsync<T>();
}
protected async Task<HttpResponseMessage> PostAsync(string request)
{
Configure();
var response = await _httpClient.PostAsync(request, null);
response.EnsureSuccessStatusCode();
return response;
}
protected async Task<HttpResponseMessage> PostAsJsonAsync(string request, T obj)
{
Configure();
var response = await _httpClient.PostAsJsonAsync(request, obj);
response.EnsureSuccessStatusCode();
return response;
}
protected async Task<HttpResponseMessage> PostAsJsonAsync(string request, object obj)
{
Configure();
var response = await _httpClient.PostAsJsonAsync(request, obj);
response.EnsureSuccessStatusCode();
return response;
}
protected async Task<HttpResponseMessage> PutAsJsonAsync(string request, T obj)
{
Configure();
var response = await _httpClient.PutAsJsonAsync(request, obj);
response.EnsureSuccessStatusCode();
return response;
}
protected async Task<HttpResponseMessage> 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);
}
}