diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index e3df9ef..43fbd58 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -13,7 +13,7 @@ name: Publish Docker image on: push: - branches: [ "master" ] + # branches: [ "master" ] jobs: push_to_registry: @@ -22,7 +22,8 @@ jobs: strategy: matrix: project: [TransitApi, TransitWebViewer] - tag: [latest, arm] + tag: [latest] + # tag: [latest, arm] permissions: packages: write contents: read diff --git a/TransitApi/Controllers/VipController.cs b/TransitApi/Controllers/VipController.cs index ea52a93..f3a1226 100644 --- a/TransitApi/Controllers/VipController.cs +++ b/TransitApi/Controllers/VipController.cs @@ -140,6 +140,32 @@ public async Task GetJsonSourceById(int stopId, CancellationToken return NotFound(json); } } + + [HttpGet("{stopId:int}/flat-json")] + public async Task GetFlatJsonById(int stopId, [FromQuery(Name = "limit")] int? maybeLimit, CancellationToken cancellationToken) + { + try + { + var request = new StopPassagesRequest + { + PassageMode = Mode.Departure, + StopName = stopId.ToString(), + }; + var response = await _ttssApi.GetStopPassagesAsync(request, cancellationToken); + var relevant = response.Actual.AsEnumerable(); + if (maybeLimit is int limit) { + relevant = relevant.Take(limit); + } + var flatResponse = relevant.SelectMany(actual => + [actual.PatternText ?? "?", actual.Direction, actual.MixedTime.Replace("%UNIT_MIN%", "min")]); + return Content(JsonSerializer.Serialize(flatResponse), "application/json"); + } + catch (WebException ex) + { + var json = JsonSerializer.Serialize(ex); + return NotFound(json); + } + } } file static class TtssExtensions