Fix 1825
This commit is contained in:
		| @@ -57,25 +57,38 @@ public class CurlElectoralApiService : IElectoralApiService | |||||||
|  |  | ||||||
|   public async Task<string?> GetAuthTokenAsync() |   public async Task<string?> GetAuthTokenAsync() | ||||||
|   { |   { | ||||||
|     var username = _configuration["ElectoralApi:Username"]; |     // Leemos las claves simples del .env | ||||||
|     var password = _configuration["ElectoralApi:Password"]; // OJO: Verifica el nombre exacto de la variable en tu .env |     var username = _configuration["API_USER"]; | ||||||
|     var arguments = $"-s -H \"username: {username}\" -H \"password: {password}\" \"{_baseUrl}/api/createtoken\""; |     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); |     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) |     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; |       return null; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     try |     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; |       return tokenResponse?.Data?.AccessToken; | ||||||
|     } |     } | ||||||
|     catch (JsonException ex) |     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; |       return null; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user