diff options
| author | Ariel Costas Guerrero <ariel@costas.dev> | 2026-03-22 13:20:00 +0100 |
|---|---|---|
| committer | Ariel Costas Guerrero <ariel@costas.dev> | 2026-03-22 13:20:00 +0100 |
| commit | 757960525576038898d655b630cbaac44671f599 (patch) | |
| tree | 8ac06ec119b29a331cfa8e5b234220048077533c | |
| parent | 5f3e83939f334562c31ce570d7189e748c275ddf (diff) | |
Add nextstopprocessing to Lugo, fix deleted stops breaking home page
3 files changed, 14 insertions, 9 deletions
diff --git a/src/Enmarcha.Backend/Controllers/ArrivalsController.cs b/src/Enmarcha.Backend/Controllers/ArrivalsController.cs index 9216004..16bc047 100644 --- a/src/Enmarcha.Backend/Controllers/ArrivalsController.cs +++ b/src/Enmarcha.Backend/Controllers/ArrivalsController.cs @@ -243,11 +243,13 @@ public partial class ArrivalsController : ControllerBase var stopIds = ids.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries); var requestContent = StopsInfoContent.Query(new StopsInfoContent.Args(stopIds)); - var request = new HttpRequestMessage(HttpMethod.Post, $"{_config.OpenTripPlannerBaseUrl}/gtfs/v1"); - request.Content = JsonContent.Create(new GraphClientRequest + var request = new HttpRequestMessage(HttpMethod.Post, $"{_config.OpenTripPlannerBaseUrl}/gtfs/v1") { - Query = requestContent - }); + Content = JsonContent.Create(new GraphClientRequest + { + Query = requestContent + }) + }; var response = await _httpClient.SendAsync(request); var responseBody = await response.Content.ReadFromJsonAsync<GraphClientResponse<StopsInfoResponse>>(); @@ -257,11 +259,14 @@ public partial class ArrivalsController : ControllerBase return StatusCode(500, "Error fetching stops data"); } - var result = responseBody.Data.Stops.ToDictionary( - s => s.GtfsId, + // TODO: Remove stops that are null, since that means the feed publisher deleted them. + var result = responseBody.Data.Stops + .Where(s => s != null) + .ToDictionary( + s => s!.GtfsId, s => { - var feedId = s.GtfsId.Split(':', 2)[0]; + var feedId = s!.GtfsId.Split(':', 2)[0]; var (fallbackColor, _) = _feedService.GetFallbackColourForFeed(feedId); return new diff --git a/src/Enmarcha.Backend/Services/Processors/NextStopsProcessor.cs b/src/Enmarcha.Backend/Services/Processors/NextStopsProcessor.cs index 6a76fe3..517faae 100644 --- a/src/Enmarcha.Backend/Services/Processors/NextStopsProcessor.cs +++ b/src/Enmarcha.Backend/Services/Processors/NextStopsProcessor.cs @@ -54,7 +54,7 @@ public class NextStopsProcessor : IArrivalsProcessor { if (nextStops.Count == 0) return null; - if (feedId is "vitrasa" or "tranvias" or "tussa" or "ourense") + if (feedId is "vitrasa" or "tranvias" or "tussa" or "ourense" or "lugo") { var streets = nextStops .Select(FeedService.GetStreetName) diff --git a/src/Enmarcha.Sources.OpenTripPlannerGql/Queries/StopsInfo.cs b/src/Enmarcha.Sources.OpenTripPlannerGql/Queries/StopsInfo.cs index f95de15..13d3704 100644 --- a/src/Enmarcha.Sources.OpenTripPlannerGql/Queries/StopsInfo.cs +++ b/src/Enmarcha.Sources.OpenTripPlannerGql/Queries/StopsInfo.cs @@ -32,7 +32,7 @@ public class StopsInfoContent : IGraphRequest<StopsInfoContent.Args> public class StopsInfoResponse : AbstractGraphResponse { - [JsonPropertyName("stops")] public List<StopItem>? Stops { get; set; } + [JsonPropertyName("stops")] public List<StopItem?>? Stops { get; set; } public class StopItem { |
