Obtener Access Token solo si expiró
unknown
csharp
2 years ago
1.8 kB
25
Indexable
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}");
}
}
}
}Editor is loading...