| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- using Grpc.Core;
- using Grpc.Net.Client;
- using GrpcShared.DTO.Db;
- using GrpcShared.Interfaces;
- using Microsoft.Net.Http.Headers;
- using NemAnBlazor.Services.Interfaces;
- using Newtonsoft.Json;
-
- namespace SpotifyService.HttpUtils
- {
- public static class HttpUtils<T> where T : new()
- {
- public static async Task<T> GetData
- (IHttpClientFactory _httpClientFactory,
- string url,
- string userId,
- IIdentityService identityService,
- IAuthService authService)
-
- {
- try
- {
- var client = _httpClientFactory.CreateClient("HttpClient");
-
- var userResponse = await identityService.GetTokenByIdAsync(new DbRequestMessage { Id = userId });
-
-
- //add header
- client.DefaultRequestHeaders.Add(HeaderNames.Authorization, "Bearer " + userResponse.Token);
-
- //get request
- var req = await client.GetAsync(url);
-
- //read response
- var response = JsonConvert.DeserializeObject<T>(await req.Content.ReadAsStringAsync())!;
-
-
- if (req.StatusCode == System.Net.HttpStatusCode.Unauthorized)
- {
- await SpotifyHelper.TryRefreshToken(authService, userResponse, identityService);
- }
- return response;
- }
- catch (RpcException e)
- {
- if (e.StatusCode == StatusCode.Cancelled)
- {
- //vrati message sa status kodom?
- return new T();
- }
- throw;
- }
-
-
- }
- public static async Task PutData(HttpClient client, string url, string userId, IIdentityService identityService)
- {
- var tokenMessage = await identityService.GetTokenByIdAsync(new GrpcShared.DTO.Db.DbRequestMessage { Id = userId });
- //add header
- client.DefaultRequestHeaders.Add(HeaderNames.Authorization, "Bearer " + tokenMessage.Token);
-
- //get request
- await client.PutAsync(url, null);
-
- }
-
- }
- }
|