Obtener Access Token solo si expiró
csharp
2 months ago
1.8 kB
18
Indexable
Never
public class PrimaxConnectionsClient { private AccessTokenResponse _accessTokenResponse; private string _accessToken; private DateTime _accessTokenExpirationTime; // Método para obtener el token public async Task<string> GetAccessTokenAsync() { if (_accessToken == null || DateTime.Now >= _accessTokenExpirationTime) { // GetAccessTokenFromAPI() invoca internamente al endpoint de Primax Connections _accessTokenResponse = await GetAccessTokenFromAPI(); _accessToken = _accessTokenResponse.AccessToken; // Establecer la vigencia del token en función de la respuesta de la API _accessTokenExpirationTime = DateTime.Now.AddSeconds(_accessTokenResponse.ExpirationTimeInSeconds); } return _accessToken; } public async Task<string> InvokeAPIEndpointAsync(string endpoint) { // Obtener el access token válido. string accessToken = await GetAccessTokenAsync(); // Realizar la solicitud a la API de terceros. using (var client = new HttpClient()) { client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); // Realizar solicitud a Primax Connections y procesar la respuesta. HttpResponseMessage response = await client.GetAsync(endpoint); if (response.IsSuccessStatusCode) { string responseBody = await response.Content.ReadAsStringAsync(); return responseBody; } else { throw new Exception($"Error en la solicitud: {response.StatusCode} - {response.ReasonPhrase}"); } } } }