aboutsummaryrefslogtreecommitdiff
path: root/src/Costasdev.Busurbano.Backend
diff options
context:
space:
mode:
Diffstat (limited to 'src/Costasdev.Busurbano.Backend')
-rw-r--r--src/Costasdev.Busurbano.Backend/Controllers/ArrivalsController.cs4
-rw-r--r--src/Costasdev.Busurbano.Backend/Controllers/TileController.cs5
-rw-r--r--src/Costasdev.Busurbano.Backend/Costasdev.Busurbano.Backend.csproj17
-rw-r--r--src/Costasdev.Busurbano.Backend/GraphClient/App/ArrivalsAtStop.cs198
-rw-r--r--src/Costasdev.Busurbano.Backend/GraphClient/App/StopTile.cs76
-rw-r--r--src/Costasdev.Busurbano.Backend/GraphClient/ResponseTypes.cs36
-rw-r--r--src/Costasdev.Busurbano.Backend/Services/Processors/CorunaRealTimeProcessor.cs5
-rw-r--r--src/Costasdev.Busurbano.Backend/Services/Processors/NextStopsProcessor.cs2
-rw-r--r--src/Costasdev.Busurbano.Backend/Services/Processors/ShapeProcessor.cs2
-rw-r--r--src/Costasdev.Busurbano.Backend/Services/Processors/VitrasaRealTimeProcessor.cs2
10 files changed, 19 insertions, 328 deletions
diff --git a/src/Costasdev.Busurbano.Backend/Controllers/ArrivalsController.cs b/src/Costasdev.Busurbano.Backend/Controllers/ArrivalsController.cs
index b4d8c96..957668a 100644
--- a/src/Costasdev.Busurbano.Backend/Controllers/ArrivalsController.cs
+++ b/src/Costasdev.Busurbano.Backend/Controllers/ArrivalsController.cs
@@ -1,11 +1,11 @@
using System.Net;
using Costasdev.Busurbano.Backend.Configuration;
-using Costasdev.Busurbano.Backend.GraphClient;
-using Costasdev.Busurbano.Backend.GraphClient.App;
using Costasdev.Busurbano.Backend.Helpers;
using Costasdev.Busurbano.Backend.Services;
using Costasdev.Busurbano.Backend.Types;
using Costasdev.Busurbano.Backend.Types.Arrivals;
+using Costasdev.Busurbano.Sources.OpenTripPlannerGql;
+using Costasdev.Busurbano.Sources.OpenTripPlannerGql.Queries;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Options;
diff --git a/src/Costasdev.Busurbano.Backend/Controllers/TileController.cs b/src/Costasdev.Busurbano.Backend/Controllers/TileController.cs
index e7efc09..0e550a3 100644
--- a/src/Costasdev.Busurbano.Backend/Controllers/TileController.cs
+++ b/src/Costasdev.Busurbano.Backend/Controllers/TileController.cs
@@ -1,6 +1,3 @@
-using Costasdev.Busurbano.Backend.GraphClient;
-using Costasdev.Busurbano.Backend.GraphClient.App;
-
using NetTopologySuite.Features;
using NetTopologySuite.IO.VectorTiles;
using NetTopologySuite.IO.VectorTiles.Mapbox;
@@ -12,6 +9,8 @@ using System.Text.Json;
using Costasdev.Busurbano.Backend.Helpers;
using Costasdev.Busurbano.Backend.Services;
using Costasdev.Busurbano.Backend.Configuration;
+using Costasdev.Busurbano.Sources.OpenTripPlannerGql;
+using Costasdev.Busurbano.Sources.OpenTripPlannerGql.Queries;
using Microsoft.Extensions.Options;
namespace Costasdev.Busurbano.Backend.Controllers;
diff --git a/src/Costasdev.Busurbano.Backend/Costasdev.Busurbano.Backend.csproj b/src/Costasdev.Busurbano.Backend/Costasdev.Busurbano.Backend.csproj
index 5e2283c..1f81e88 100644
--- a/src/Costasdev.Busurbano.Backend/Costasdev.Busurbano.Backend.csproj
+++ b/src/Costasdev.Busurbano.Backend/Costasdev.Busurbano.Backend.csproj
@@ -12,16 +12,21 @@
</PropertyGroup>
<ItemGroup>
- <PackageReference Include="Costasdev.VigoTransitApi" Version="0.1.0" />
- <PackageReference Include="Google.Protobuf" Version="3.33.1" />
- <PackageReference Include="ProjNet" Version="2.1.0" />
+ <PackageReference Include="Costasdev.VigoTransitApi" />
+ <PackageReference Include="Google.Protobuf" />
+ <PackageReference Include="ProjNet" />
- <PackageReference Include="NetTopologySuite" Version="2.6.0" />
- <PackageReference Include="NetTopologySuite.IO.GeoJSON" Version="4.0.0" />
- <PackageReference Include="NetTopologySuite.IO.VectorTiles.Mapbox" Version="1.1.0" />
+ <PackageReference Include="NetTopologySuite" />
+ <PackageReference Include="NetTopologySuite.IO.GeoJSON" />
+ <PackageReference Include="NetTopologySuite.IO.VectorTiles.Mapbox" />
</ItemGroup>
<ItemGroup>
+ <ProjectReference Include="..\Costasdev.Busurbano.Sources.OpenTripPlannerGql\Costasdev.Busurbano.Sources.OpenTripPlannerGql.csproj" />
<ProjectReference Include="..\Costasdev.Busurbano.Sources.TranviasCoruna\Costasdev.Busurbano.Sources.TranviasCoruna.csproj" />
</ItemGroup>
+
+ <ItemGroup>
+ <Folder Include="GraphClient\" />
+ </ItemGroup>
</Project>
diff --git a/src/Costasdev.Busurbano.Backend/GraphClient/App/ArrivalsAtStop.cs b/src/Costasdev.Busurbano.Backend/GraphClient/App/ArrivalsAtStop.cs
deleted file mode 100644
index 10235de..0000000
--- a/src/Costasdev.Busurbano.Backend/GraphClient/App/ArrivalsAtStop.cs
+++ /dev/null
@@ -1,198 +0,0 @@
-using System.Globalization;
-using System.Text.Json.Serialization;
-
-namespace Costasdev.Busurbano.Backend.GraphClient.App;
-
-public class ArrivalsAtStopContent : IGraphRequest<ArrivalsAtStopContent.Args>
-{
- public record Args(string Id, bool Reduced);
-
- public static string Query(Args args)
- {
- var startTime = DateTimeOffset.UtcNow.AddMinutes(-75);
- var startTimeUnix = startTime.ToUnixTimeSeconds();
- var geometryField = args.Reduced ? "" : @"tripGeometry { points }";
-
- return string.Create(CultureInfo.InvariantCulture, $@"
- query Query {{
- stop(id:""{args.Id}"") {{
- code
- name
- lat
- lon
- routes {{
- gtfsId
- shortName
- color
- textColor
- }}
- arrivals: stoptimesWithoutPatterns(numberOfDepartures: 100, startTime: {startTimeUnix}, timeRange: 14400) {{
- headsign
- scheduledDeparture
- serviceDay
- pickupType
-
- trip {{
- gtfsId
- serviceId
- routeShortName
- route {{
- gtfsId
- color
- textColor
- longName
- }}
- departureStoptime {{
- scheduledDeparture
- }}
- {geometryField}
- stoptimes {{
- stop {{
- name
- lat
- lon
- }}
- scheduledDeparture
- }}
- }}
- }}
- }}
- }}
- ");
- }
-}
-
-public class ArrivalsAtStopResponse : AbstractGraphResponse
-{
- [JsonPropertyName("stop")] public required StopItem Stop { get; set; }
-
- public class StopItem
- {
- [JsonPropertyName("code")] public required string Code { get; set; }
-
- [JsonPropertyName("name")] public required string Name { get; set; }
-
- [JsonPropertyName("lat")] public double Lat { get; set; }
-
- [JsonPropertyName("lon")] public double Lon { get; set; }
-
- [JsonPropertyName("routes")] public List<RouteDetails> Routes { get; set; } = [];
-
- [JsonPropertyName("arrivals")] public List<Arrival> Arrivals { get; set; } = [];
- }
-
- public class Arrival
- {
- [JsonPropertyName("headsign")] public required string Headsign { get; set; }
-
- [JsonPropertyName("scheduledDeparture")]
- public int ScheduledDepartureSeconds { get; set; }
-
- [JsonPropertyName("serviceDay")]
- public long ServiceDay { get; set; }
-
- [JsonPropertyName("pickupType")] public required string PickupTypeOriginal { get; set; }
-
- public PickupType PickupTypeParsed => PickupType.Parse(PickupTypeOriginal);
-
- [JsonPropertyName("trip")] public required TripDetails Trip { get; set; }
- }
-
- public class TripDetails
- {
- [JsonPropertyName("gtfsId")] public required string GtfsId { get; set; }
-
- [JsonPropertyName("serviceId")] public required string ServiceId { get; set; }
-
- [JsonPropertyName("routeShortName")] public required string RouteShortName { get; set; }
-
- [JsonPropertyName("departureStoptime")]
- public required DepartureStoptime DepartureStoptime { get; set; }
-
- [JsonPropertyName("route")] public required RouteDetails Route { get; set; }
-
- [JsonPropertyName("tripGeometry")] public GeometryDetails? Geometry { get; set; }
-
- [JsonPropertyName("stoptimes")] public List<StoptimeDetails> Stoptimes { get; set; } = [];
- }
-
- public class GeometryDetails
- {
- [JsonPropertyName("points")] public string? Points { get; set; }
- }
-
- public class StoptimeDetails
- {
- [JsonPropertyName("stop")] public required StopDetails Stop { get; set; }
- [JsonPropertyName("scheduledDeparture")] public int ScheduledDeparture { get; set; }
- }
-
- public class StopDetails
- {
- [JsonPropertyName("name")] public required string Name { get; set; }
- [JsonPropertyName("lat")] public double Lat { get; set; }
- [JsonPropertyName("lon")] public double Lon { get; set; }
- }
-
- public class DepartureStoptime
- {
- [JsonPropertyName("scheduledDeparture")]
- public int ScheduledDeparture { get; set; }
- }
-
- public class RouteDetails
- {
- [JsonPropertyName("gtfsId")] public required string GtfsId { get; set; }
- public string GtfsIdValue => GtfsId.Split(':', 2)[1];
-
- [JsonPropertyName("shortName")] public string? ShortName { get; set; }
-
- [JsonPropertyName("color")] public string? Color { get; set; }
-
- [JsonPropertyName("textColor")] public string? TextColor { get; set; }
-
- [JsonPropertyName("longName")] public string? LongName { get; set; }
- }
-
- public class PickupType
- {
- private readonly string _value;
-
- private PickupType(string value)
- {
- _value = value;
- }
-
- public static PickupType Parse(string value)
- {
- return value switch
- {
- "SCHEDULED" => Scheduled,
- "NONE" => None,
- "CALL_AGENCY" => CallAgency,
- "COORDINATE_WITH_DRIVER" => CoordinateWithDriver,
- _ => throw new ArgumentException("Unsupported pickup type ", value)
- };
- }
-
- public static readonly PickupType Scheduled = new PickupType("SCHEDULED");
- public static readonly PickupType None = new PickupType("NONE");
- public static readonly PickupType CallAgency = new PickupType("CALL_AGENCY");
- public static readonly PickupType CoordinateWithDriver = new PickupType("COORDINATE_WITH_DRIVER");
-
- public override bool Equals(object? other)
- {
- if (other is not PickupType otherPt)
- {
- return false;
- }
-
- return otherPt._value == _value;
- }
-
- public override int GetHashCode()
- {
- return _value.GetHashCode();
- }
- }
-}
diff --git a/src/Costasdev.Busurbano.Backend/GraphClient/App/StopTile.cs b/src/Costasdev.Busurbano.Backend/GraphClient/App/StopTile.cs
deleted file mode 100644
index 802de9a..0000000
--- a/src/Costasdev.Busurbano.Backend/GraphClient/App/StopTile.cs
+++ /dev/null
@@ -1,76 +0,0 @@
-using System.Globalization;
-using System.Text.Json.Serialization;
-
-namespace Costasdev.Busurbano.Backend.GraphClient.App;
-
-public class StopTileRequestContent : IGraphRequest<StopTileRequestContent.Bbox>
-{
- public record Bbox(double MinLon, double MinLat, double MaxLon, double MaxLat);
-
- public static string Query(Bbox bbox)
- {
- return string.Create(CultureInfo.InvariantCulture, $@"
- query Query {{
- stopsByBbox(
- minLat: {bbox.MinLat:F6}
- minLon: {bbox.MinLon:F6}
- maxLon: {bbox.MaxLon:F6}
- maxLat: {bbox.MaxLat:F6}
- ) {{
- gtfsId
- code
- name
- lat
- lon
- routes {{
- gtfsId
- shortName
- color
- textColor
- }}
- }}
- }}
- ");
- }
-}
-
-public class StopTileResponse : AbstractGraphResponse
-{
- [JsonPropertyName("stopsByBbox")]
- public List<Stop>? StopsByBbox { get; set; }
-
- public record Stop
- {
- [JsonPropertyName("gtfsId")]
- public required string GtfsId { get; set; }
-
- [JsonPropertyName("code")]
- public string? Code { get; set; }
-
- [JsonPropertyName("name")]
- public required string Name { get; set; }
-
- [JsonPropertyName("lat")]
- public required double Lat { get; set; }
-
- [JsonPropertyName("lon")]
- public required double Lon { get; set; }
-
- [JsonPropertyName("routes")]
- public List<Route>? Routes { get; set; }
- }
-
- public record Route
- {
- [JsonPropertyName("gtfsId")]
- public required string GtfsId { get; set; }
- [JsonPropertyName("shortName")]
- public required string ShortName { get; set; }
-
- [JsonPropertyName("color")]
- public string? Color { get; set; }
-
- [JsonPropertyName("textColor")]
- public string? TextColor { get; set; }
- }
-}
diff --git a/src/Costasdev.Busurbano.Backend/GraphClient/ResponseTypes.cs b/src/Costasdev.Busurbano.Backend/GraphClient/ResponseTypes.cs
deleted file mode 100644
index 2d4d5df..0000000
--- a/src/Costasdev.Busurbano.Backend/GraphClient/ResponseTypes.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Text.Json.Serialization;
-
-namespace Costasdev.Busurbano.Backend.GraphClient;
-
-public class GraphClientRequest
-{
- public string OperationName { get; set; } = "Query";
- public required string Query { get; set; }
-}
-
-public class GraphClientResponse<T> where T : AbstractGraphResponse
-{
- [JsonPropertyName("data")]
- public T? Data { get; set; }
-
- [JsonPropertyName("errors")]
- public List<GraphClientError>? Errors { get; set; }
-
- public bool IsSuccess => Errors == null || Errors.Count == 0;
-}
-
-public interface IGraphRequest<T>
-{
- static abstract string Query(T parameters);
-}
-
-public class AbstractGraphResponse
-{
-}
-
-public class GraphClientError
-{
- [JsonPropertyName("message")]
- public required string Message { get; set; }
-}
-
diff --git a/src/Costasdev.Busurbano.Backend/Services/Processors/CorunaRealTimeProcessor.cs b/src/Costasdev.Busurbano.Backend/Services/Processors/CorunaRealTimeProcessor.cs
index 2ac1554..ee98a1f 100644
--- a/src/Costasdev.Busurbano.Backend/Services/Processors/CorunaRealTimeProcessor.cs
+++ b/src/Costasdev.Busurbano.Backend/Services/Processors/CorunaRealTimeProcessor.cs
@@ -1,10 +1,7 @@
-using Costasdev.Busurbano.Backend.Configuration;
-using Costasdev.Busurbano.Backend.GraphClient.App;
using Costasdev.Busurbano.Backend.Types;
using Costasdev.Busurbano.Backend.Types.Arrivals;
-using Costasdev.VigoTransitApi;
+using Costasdev.Busurbano.Sources.OpenTripPlannerGql.Queries;
using Costasdev.Busurbano.Sources.TranviasCoruna;
-using Microsoft.Extensions.Options;
using Arrival = Costasdev.Busurbano.Backend.Types.Arrivals.Arrival;
namespace Costasdev.Busurbano.Backend.Services.Processors;
diff --git a/src/Costasdev.Busurbano.Backend/Services/Processors/NextStopsProcessor.cs b/src/Costasdev.Busurbano.Backend/Services/Processors/NextStopsProcessor.cs
index 6273e0d..a00a68a 100644
--- a/src/Costasdev.Busurbano.Backend/Services/Processors/NextStopsProcessor.cs
+++ b/src/Costasdev.Busurbano.Backend/Services/Processors/NextStopsProcessor.cs
@@ -1,4 +1,4 @@
-using Costasdev.Busurbano.Backend.GraphClient.App;
+using Costasdev.Busurbano.Sources.OpenTripPlannerGql.Queries;
namespace Costasdev.Busurbano.Backend.Services.Processors;
diff --git a/src/Costasdev.Busurbano.Backend/Services/Processors/ShapeProcessor.cs b/src/Costasdev.Busurbano.Backend/Services/Processors/ShapeProcessor.cs
index 93e4a4f..40bc508 100644
--- a/src/Costasdev.Busurbano.Backend/Services/Processors/ShapeProcessor.cs
+++ b/src/Costasdev.Busurbano.Backend/Services/Processors/ShapeProcessor.cs
@@ -1,4 +1,4 @@
-using Costasdev.Busurbano.Backend.GraphClient.App;
+using Costasdev.Busurbano.Sources.OpenTripPlannerGql.Queries;
namespace Costasdev.Busurbano.Backend.Services.Processors;
diff --git a/src/Costasdev.Busurbano.Backend/Services/Processors/VitrasaRealTimeProcessor.cs b/src/Costasdev.Busurbano.Backend/Services/Processors/VitrasaRealTimeProcessor.cs
index 7a1d6ea..5e0783d 100644
--- a/src/Costasdev.Busurbano.Backend/Services/Processors/VitrasaRealTimeProcessor.cs
+++ b/src/Costasdev.Busurbano.Backend/Services/Processors/VitrasaRealTimeProcessor.cs
@@ -1,7 +1,7 @@
using Costasdev.Busurbano.Backend.Configuration;
-using Costasdev.Busurbano.Backend.GraphClient.App;
using Costasdev.Busurbano.Backend.Types;
using Costasdev.Busurbano.Backend.Types.Arrivals;
+using Costasdev.Busurbano.Sources.OpenTripPlannerGql.Queries;
using Costasdev.VigoTransitApi;
using Microsoft.Extensions.Options;