Authorize API
All checks were successful
Game Ideas build for PR / build_blazor_app (pull_request) Successful in 40s
All checks were successful
Game Ideas build for PR / build_blazor_app (pull_request) Successful in 40s
This commit is contained in:
@@ -3,10 +3,15 @@ using System.Net.Http.Headers;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Text.Json;
|
||||
using System.Text;
|
||||
using Blazored.LocalStorage;
|
||||
using GameIdeas.Shared.Constants;
|
||||
|
||||
namespace GameIdeas.BlazorApp.Services;
|
||||
|
||||
public class HttpClientService(IHttpClientFactory httpClientFactory, ILoggerFactory loggerFactory) : IHttpClientService
|
||||
public class HttpClientService(
|
||||
IHttpClientFactory httpClientFactory,
|
||||
ILoggerFactory loggerFactory,
|
||||
ILocalStorageService localStorage) : IHttpClientService
|
||||
{
|
||||
private readonly HttpClient httpClient = httpClientFactory.CreateClient("GameIdeas.WebAPI");
|
||||
private readonly ILogger<HttpClientService> logger = loggerFactory.CreateLogger<HttpClientService>();
|
||||
@@ -25,6 +30,8 @@ public class HttpClientService(IHttpClientFactory httpClientFactory, ILoggerFact
|
||||
|
||||
public async Task<T?> PostAsync<T>(string url, object data)
|
||||
{
|
||||
await SetAuthorizationHeader();
|
||||
|
||||
var jsonContent = JsonSerializer.Serialize(data, _optionsCamelCase);
|
||||
var content = new StringContent(jsonContent, Encoding.UTF8, "application/json");
|
||||
var response = await httpClient.PostAsync(url, content);
|
||||
@@ -32,8 +39,11 @@ public class HttpClientService(IHttpClientFactory httpClientFactory, ILoggerFact
|
||||
return await GetResultValue<T>(response, ResourcesKey.ErrorWhenPostingData);
|
||||
}
|
||||
|
||||
|
||||
public async Task<T?> PutAsync<T>(string url, object data)
|
||||
{
|
||||
await SetAuthorizationHeader();
|
||||
|
||||
var jsonContent = JsonSerializer.Serialize(data, _optionsCamelCase);
|
||||
var content = new StringContent(jsonContent, Encoding.UTF8, "application/json");
|
||||
var response = await httpClient.PutAsync(url, content);
|
||||
@@ -43,6 +53,7 @@ public class HttpClientService(IHttpClientFactory httpClientFactory, ILoggerFact
|
||||
|
||||
public async Task<T?> DeleteAsync<T>(string? url)
|
||||
{
|
||||
await SetAuthorizationHeader();
|
||||
var response = await httpClient.DeleteAsync(url);
|
||||
|
||||
return await GetResultValue<T>(response, ResourcesKey.ErrorWhenDeletingData);
|
||||
@@ -50,6 +61,7 @@ public class HttpClientService(IHttpClientFactory httpClientFactory, ILoggerFact
|
||||
|
||||
public async Task<T?> FetchDataAsync<T>(string? url)
|
||||
{
|
||||
await SetAuthorizationHeader();
|
||||
var response = await httpClient.GetAsync(url);
|
||||
|
||||
return await GetResultValue<T>(response, ResourcesKey.ErrorWhenFetchingData);
|
||||
@@ -57,6 +69,7 @@ public class HttpClientService(IHttpClientFactory httpClientFactory, ILoggerFact
|
||||
|
||||
public async Task<byte[]?> FetchBytesAsync(string? url)
|
||||
{
|
||||
await SetAuthorizationHeader();
|
||||
var response = await httpClient.GetAsync(url);
|
||||
|
||||
if (response.IsSuccessStatusCode)
|
||||
@@ -71,6 +84,7 @@ public class HttpClientService(IHttpClientFactory httpClientFactory, ILoggerFact
|
||||
|
||||
public async Task<Stream?> FetchStreamAsync(string? url)
|
||||
{
|
||||
await SetAuthorizationHeader();
|
||||
var response = await httpClient.GetAsync(url);
|
||||
|
||||
if (response.IsSuccessStatusCode)
|
||||
@@ -84,6 +98,8 @@ public class HttpClientService(IHttpClientFactory httpClientFactory, ILoggerFact
|
||||
|
||||
public async Task<T?> PostFileAsync<T>(string? url, Stream fileStream, string fileName, string contentType)
|
||||
{
|
||||
await SetAuthorizationHeader();
|
||||
|
||||
using var content = new MultipartFormDataContent();
|
||||
|
||||
var streamContent = new StreamContent(fileStream);
|
||||
@@ -122,4 +138,11 @@ public class HttpClientService(IHttpClientFactory httpClientFactory, ILoggerFact
|
||||
throw new HttpRequestException(
|
||||
$"{errorMessage} + StatusCode: {response.StatusCode} + Reason: {response.ReasonPhrase}");
|
||||
}
|
||||
|
||||
private async Task SetAuthorizationHeader()
|
||||
{
|
||||
var token = await localStorage.GetItemAsStringAsync(GlobalConstants.LS_AUTH_STORAGE_KEY);
|
||||
httpClient.DefaultRequestHeaders.Authorization =
|
||||
new AuthenticationHeaderValue("bearer", token);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user