Fix 1825
This commit is contained in:
@@ -57,25 +57,38 @@ public class CurlElectoralApiService : IElectoralApiService
|
||||
|
||||
public async Task<string?> GetAuthTokenAsync()
|
||||
{
|
||||
var username = _configuration["ElectoralApi:Username"];
|
||||
var password = _configuration["ElectoralApi:Password"]; // OJO: Verifica el nombre exacto de la variable en tu .env
|
||||
var arguments = $"-s -H \"username: {username}\" -H \"password: {password}\" \"{_baseUrl}/api/createtoken\"";
|
||||
// Leemos las claves simples del .env
|
||||
var username = _configuration["API_USER"];
|
||||
var password = _configuration["API_PASSWORD"];
|
||||
|
||||
// Hardcodeamos la URL para estar 100% seguros
|
||||
var url = "https://api.eleccionesbonaerenses.gba.gob.ar/api/createtoken";
|
||||
|
||||
// Usamos comillas simples para los headers para proteger caracteres especiales en el shell
|
||||
var arguments = $"-s -H 'username: {username}' -H 'password: {password}' '{url}'";
|
||||
|
||||
var (status, output) = await ExecuteCurlCommand(arguments);
|
||||
|
||||
// Si el ExitCode no es 0, la respuesta de curl es un error, no el cuerpo de la página.
|
||||
if (status != 200)
|
||||
{
|
||||
_logger.LogError("Curl recibió un código de estado no exitoso. Respuesta: {Output}", output);
|
||||
_logger.LogError("Curl falló al ejecutar el comando. Salida de error: {Output}", output);
|
||||
return null;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var tokenResponse = JsonSerializer.Deserialize<TokenResponse>(output);
|
||||
// Añadimos opciones para ser más flexibles con el JSON que venga
|
||||
var jsonOptions = new JsonSerializerOptions { PropertyNameCaseInsensitive = true };
|
||||
var tokenResponse = JsonSerializer.Deserialize<TokenResponse>(output, jsonOptions);
|
||||
|
||||
// Log de éxito
|
||||
_logger.LogInformation("Token obtenido exitosamente!");
|
||||
return tokenResponse?.Data?.AccessToken;
|
||||
}
|
||||
catch (JsonException ex)
|
||||
{
|
||||
_logger.LogError(ex, "Falló la deserialización del JSON. La respuesta del servidor NO era un JSON válido. Respuesta recibida: {Output}", output);
|
||||
_logger.LogError(ex, "Falló la deserialización del JSON. El servidor respondió con HTML (probablemente un error). Respuesta recibida: {Output}", output);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user