diff options
Diffstat (limited to 'src/Enmarcha.Sources.OpenTripPlannerGql')
3 files changed, 25 insertions, 13 deletions
diff --git a/src/Enmarcha.Sources.OpenTripPlannerGql/OpenTripPlannerClient.cs b/src/Enmarcha.Sources.OpenTripPlannerGql/OpenTripPlannerClient.cs index 453a03e..01a1fcd 100644 --- a/src/Enmarcha.Sources.OpenTripPlannerGql/OpenTripPlannerClient.cs +++ b/src/Enmarcha.Sources.OpenTripPlannerGql/OpenTripPlannerClient.cs @@ -24,7 +24,7 @@ public class OpenTripPlannerClient public async Task GetStopsInBbox(double minLat, double minLon, double maxLat, double maxLon) { var requestContent = - StopTileRequestContent.Query(new StopTileRequestContent.Bbox(minLon, minLat, maxLon, maxLat)); + StopTileRequestContent.Query(new StopTileRequestContent.TileRequestParams(minLon, minLat, maxLon, maxLat)); var request = new HttpRequestMessage(HttpMethod.Post, $"{_baseUrl}/gtfs/v1"); request.Content = JsonContent.Create(new GraphClientRequest diff --git a/src/Enmarcha.Sources.OpenTripPlannerGql/Queries/RoutesListContent.cs b/src/Enmarcha.Sources.OpenTripPlannerGql/Queries/RoutesListContent.cs index 71360ee..9894f14 100644 --- a/src/Enmarcha.Sources.OpenTripPlannerGql/Queries/RoutesListContent.cs +++ b/src/Enmarcha.Sources.OpenTripPlannerGql/Queries/RoutesListContent.cs @@ -1,4 +1,3 @@ -using System.Globalization; using System.Text.Json.Serialization; namespace Enmarcha.Sources.OpenTripPlannerGql.Queries; @@ -9,10 +8,12 @@ public class RoutesListContent : IGraphRequest<RoutesListContent.Args> public static string Query(Args args) { - var feedsStr = string.Join(", ", args.Feeds.Select(f => $"\"{f}\"")); - return string.Create(CultureInfo.InvariantCulture, $$""" + var feedsArg = args.Feeds.Length > 0 + ? $"(feeds: [{string.Join(", ", args.Feeds.Select(f => $"\"{f}\""))}])" + : ""; + return $$""" query Query { - routes(feeds: [{{feedsStr}}]) { + routes{{feedsArg}} { gtfsId shortName longName @@ -29,7 +30,7 @@ public class RoutesListContent : IGraphRequest<RoutesListContent.Args> } } } - """); + """; } } diff --git a/src/Enmarcha.Sources.OpenTripPlannerGql/Queries/StopTile.cs b/src/Enmarcha.Sources.OpenTripPlannerGql/Queries/StopTile.cs index fad28eb..6079ea3 100644 --- a/src/Enmarcha.Sources.OpenTripPlannerGql/Queries/StopTile.cs +++ b/src/Enmarcha.Sources.OpenTripPlannerGql/Queries/StopTile.cs @@ -3,19 +3,30 @@ using System.Text.Json.Serialization; namespace Enmarcha.Sources.OpenTripPlannerGql.Queries; -public class StopTileRequestContent : IGraphRequest<StopTileRequestContent.Bbox> +public class StopTileRequestContent : IGraphRequest<StopTileRequestContent.TileRequestParams> { - public record Bbox(double MinLon, double MinLat, double MaxLon, double MaxLat); + public record TileRequestParams( + double MinLon, + double MinLat, + double MaxLon, + double MaxLat, + string[]? Feeds = null + ); - public static string Query(Bbox bbox) + public static string Query(TileRequestParams req) { + var feedsFilter = req.Feeds != null && req.Feeds.Length > 0 + ? $"feeds: [{string.Join(", ", req.Feeds.Select(f => $"\"{f}\""))}]" + : string.Empty; + return string.Create(CultureInfo.InvariantCulture, $@" query Query {{ stopsByBbox( - minLat: {bbox.MinLat:F6} - minLon: {bbox.MinLon:F6} - maxLon: {bbox.MaxLon:F6} - maxLat: {bbox.MaxLat:F6} + minLat: {req.MinLat:F6} + minLon: {req.MinLon:F6} + maxLon: {req.MaxLon:F6} + maxLat: {req.MaxLat:F6} + {feedsFilter} ) {{ gtfsId code |
