Fix getBancas
This commit is contained in:
@@ -83,7 +83,6 @@ public class ElectoralApiService : IElectoralApiService
|
|||||||
var client = _httpClientFactory.CreateClient("ElectoralApiClient");
|
var client = _httpClientFactory.CreateClient("ElectoralApiClient");
|
||||||
var requestUri = $"/api/resultados/getBancas?distritoId={distritoId}&categoriaId={categoriaId}";
|
var requestUri = $"/api/resultados/getBancas?distritoId={distritoId}&categoriaId={categoriaId}";
|
||||||
|
|
||||||
// Añadimos el seccionProvincialId a la URL SÓLO si tiene un valor.
|
|
||||||
if (!string.IsNullOrEmpty(seccionProvincialId))
|
if (!string.IsNullOrEmpty(seccionProvincialId))
|
||||||
{
|
{
|
||||||
requestUri += $"&seccionProvincialId={seccionProvincialId}";
|
requestUri += $"&seccionProvincialId={seccionProvincialId}";
|
||||||
@@ -91,8 +90,42 @@ public class ElectoralApiService : IElectoralApiService
|
|||||||
|
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, requestUri);
|
var request = new HttpRequestMessage(HttpMethod.Get, requestUri);
|
||||||
request.Headers.Add("Authorization", $"Bearer {authToken}");
|
request.Headers.Add("Authorization", $"Bearer {authToken}");
|
||||||
var response = await client.SendAsync(request);
|
|
||||||
return response.IsSuccessStatusCode ? await response.Content.ReadFromJsonAsync<RepartoBancasDto>() : null;
|
HttpResponseMessage response;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
response = await client.SendAsync(request);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// Captura errores de red (ej. la API se cae momentáneamente)
|
||||||
|
_logger.LogError(ex, "La petición HTTP a getBancas falló. URI: {requestUri}", requestUri);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Comprobamos que la respuesta fue exitosa Y que contiene datos antes de intentar leerla.
|
||||||
|
if (response.IsSuccessStatusCode && response.Content?.Headers.ContentLength > 0)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Solo si hay contenido, intentamos deserializar.
|
||||||
|
return await response.Content.ReadFromJsonAsync<RepartoBancasDto>();
|
||||||
|
}
|
||||||
|
catch (JsonException ex)
|
||||||
|
{
|
||||||
|
// Si el contenido no es un JSON válido, lo registramos y devolvemos null.
|
||||||
|
_logger.LogWarning(ex, "La API devolvió una respuesta no-JSON para getBancas. URI: {requestUri}, Status: {statusCode}", requestUri, response.StatusCode);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (!response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
// Si la API devolvió un error HTTP, lo registramos.
|
||||||
|
_logger.LogWarning("La API devolvió un código de error {statusCode} para getBancas. URI: {requestUri}", response.StatusCode, requestUri);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Si la respuesta fue 200 OK pero con cuerpo vacío, o si fue un error HTTP, devolvemos null.
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<List<string>?> GetTelegramasTotalizadosAsync(string authToken, string distritoId, string seccionId, int? categoriaId = null)
|
public async Task<List<string>?> GetTelegramasTotalizadosAsync(string authToken, string distritoId, string seccionId, int? categoriaId = null)
|
||||||
|
|||||||
Reference in New Issue
Block a user