using MauiApp.Core.RestClient.AuthenticationApi.Contracts; using MauiApp.Core.RestClient.IntegryApi.Dto; using MauiApp.Core.RestClient.IntegryApi.Exceptions; using MauiApp.Core.System.Device.Contracts; namespace MauiApp.Core.RestClient.AuthenticationApi; public class AuthenticationApiRestClient : ApiRestClient, IAuthenticationApiRestClient { private readonly IDeviceService _deviceService; public AuthenticationApiRestClient(IDeviceService deviceService) { _deviceService = deviceService; } public async Task Post(string url, object body, IDictionary queryParams = null, HttpClient httpClient = null) { var result = await base.Post>(url, body, queryParams, httpClient); if (result?.Esito == -1) { throw new RestException(result.ErrorMessage); } return result.Dto ?? result.Entity; } public async Task Get(string url, IDictionary queryParams = null, HttpClient httpClient = null) { var result = await base.Get>(url, queryParams, httpClient); if (result?.Esito == -1) { throw new RestException(result.ErrorMessage); } return result.Dto ?? result.Entity; } public async Task RefreshToken(string refreshToken, string profileDb) { IDictionary queryParams = new Dictionary { { "profileDb", profileDb } }; var refreshTokenRequest = new AuthRefreshTokenRequestDto() { DeviceId = await _deviceService.GetDeviceId(), RefreshToken = refreshToken }; var refreshTokenResponse = await Post("auth/refresh", refreshTokenRequest, queryParams); return refreshTokenResponse; } }