diff --git a/Elecciones-Web/src/Elecciones.Infrastructure/Services/CurlElectoralApiService.cs b/Elecciones-Web/src/Elecciones.Infrastructure/Services/CurlElectoralApiService.cs index 161a4d3..5024306 100644 --- a/Elecciones-Web/src/Elecciones.Infrastructure/Services/CurlElectoralApiService.cs +++ b/Elecciones-Web/src/Elecciones.Infrastructure/Services/CurlElectoralApiService.cs @@ -57,25 +57,38 @@ public class CurlElectoralApiService : IElectoralApiService public async Task 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(output); + // Añadimos opciones para ser más flexibles con el JSON que venga + var jsonOptions = new JsonSerializerOptions { PropertyNameCaseInsensitive = true }; + var tokenResponse = JsonSerializer.Deserialize(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; } }