From 91f7d7dd5a4ca8453cfdbc9a3beeb216b6638ef7 Mon Sep 17 00:00:00 2001 From: Ariel Costas Guerrero Date: Mon, 22 Dec 2025 14:13:45 +0100 Subject: Implement fetching scheduled arrivals for stop --- .../Controllers/ArrivalsController.cs | 52 ++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/Costasdev.Busurbano.Backend/Controllers/ArrivalsController.cs (limited to 'src/Costasdev.Busurbano.Backend/Controllers/ArrivalsController.cs') diff --git a/src/Costasdev.Busurbano.Backend/Controllers/ArrivalsController.cs b/src/Costasdev.Busurbano.Backend/Controllers/ArrivalsController.cs new file mode 100644 index 0000000..eb81784 --- /dev/null +++ b/src/Costasdev.Busurbano.Backend/Controllers/ArrivalsController.cs @@ -0,0 +1,52 @@ +using Costasdev.Busurbano.Backend.GraphClient; +using Costasdev.Busurbano.Backend.GraphClient.App; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Caching.Memory; + +namespace Costasdev.Busurbano.Backend.Controllers; + +[ApiController] +[Route("api")] +public class ArrivalsController : ControllerBase +{ + private readonly ILogger _logger; + private readonly IMemoryCache _cache; + private readonly HttpClient _httpClient; + + public ArrivalsController( + ILogger logger, + IMemoryCache cache, + HttpClient httpClient + ) + { + _logger = logger; + _cache = cache; + _httpClient = httpClient; + } + + [HttpGet("arrivals")] + public async Task GetArrivals(string id) + { + var requestContent = ArrivalsAtStopContent.Query(id); + var request = new HttpRequestMessage(HttpMethod.Post, "http://100.67.54.115:3957/otp/gtfs/v1"); + request.Content = JsonContent.Create(new GraphClientRequest + { + Query = requestContent + }); + + var response = await _httpClient.SendAsync(request); + var responseBody = await response.Content.ReadFromJsonAsync>(); + + if (responseBody is not { IsSuccess: true }) + { + _logger.LogError( + "Error fetching stop data, received {StatusCode} {ResponseBody}", + response.StatusCode, + await response.Content.ReadAsStringAsync() + ); + return StatusCode(500, "Error fetching stop data"); + } + + return Ok(responseBody.Data?.Stop); + } +} -- cgit v1.3