diff options
| author | Ariel Costas Guerrero <ariel@costas.dev> | 2025-12-22 18:16:57 +0100 |
|---|---|---|
| committer | Ariel Costas Guerrero <ariel@costas.dev> | 2025-12-22 18:16:57 +0100 |
| commit | 4b7eaa318f22d7cc768491c421cb7aeac477f95d (patch) | |
| tree | 0b39abce444679396475e4f48885479e2ae0650f /src/Costasdev.Busurbano.Backend/Types | |
| parent | 91f7d7dd5a4ca8453cfdbc9a3beeb216b6638ef7 (diff) | |
Implement retrieving next arrivals for a stop (scheduled only)
Diffstat (limited to 'src/Costasdev.Busurbano.Backend/Types')
| -rw-r--r-- | src/Costasdev.Busurbano.Backend/Types/Arrivals/Arrival.cs | 82 | ||||
| -rw-r--r-- | src/Costasdev.Busurbano.Backend/Types/Arrivals/StopArrivalsResponse.cs | 15 | ||||
| -rw-r--r-- | src/Costasdev.Busurbano.Backend/Types/Otp/OtpModels.cs | 4 | ||||
| -rw-r--r-- | src/Costasdev.Busurbano.Backend/Types/Planner/PlannerResponse.cs (renamed from src/Costasdev.Busurbano.Backend/Types/Planner/PlannerModels.cs) | 0 |
4 files changed, 99 insertions, 2 deletions
diff --git a/src/Costasdev.Busurbano.Backend/Types/Arrivals/Arrival.cs b/src/Costasdev.Busurbano.Backend/Types/Arrivals/Arrival.cs new file mode 100644 index 0000000..c813ccf --- /dev/null +++ b/src/Costasdev.Busurbano.Backend/Types/Arrivals/Arrival.cs @@ -0,0 +1,82 @@ +using System.Text.Json.Serialization; + +namespace Costasdev.Busurbano.Backend.Types.Arrivals; + +public class Arrival +{ + [JsonPropertyName("route")] + public required RouteInfo Route { get; set; } + + [JsonPropertyName("headsign")] + public required HeadsignInfo Headsign { get; set; } + + [JsonPropertyName("estimate")] + public required ArrivalDetails Estimate { get; set; } + + [JsonPropertyName("delay")] + public DelayBadge? Delay { get; set; } + + [JsonPropertyName("shift")] + public ShiftBadge? Shift { get; set; } +} + +public class RouteInfo +{ + [JsonPropertyName("shortName")] + public required string ShortName { get; set; } + + [JsonPropertyName("colour")] + public required string Colour { get; set; } + + [JsonPropertyName("textColour")] + public required string TextColour { get; set; } +} + +public class HeadsignInfo +{ + [JsonPropertyName("badge")] + public string? Badge { get; set; } + + [JsonPropertyName("destination")] + public required string Destination { get; set; } + + [JsonPropertyName("marquee")] + public string? Marquee { get; set; } +} + +public class ArrivalDetails +{ + [JsonPropertyName("minutes")] + public required int Minutes { get; set; } + + [JsonPropertyName("precission")] + public ArrivalPrecission Precission { get; set; } = ArrivalPrecission.Scheduled; +} + +[JsonConverter(typeof(JsonStringEnumConverter))] +public enum ArrivalPrecission +{ + [JsonStringEnumMemberName("confident")] + Confident = 0, + [JsonStringEnumMemberName("unsure")] + Unsure = 1, + [JsonStringEnumMemberName("scheduled")] + Scheduled = 2, + [JsonStringEnumMemberName("past")] + Past = 3 +} + +public class DelayBadge +{ + [JsonPropertyName("minutes")] + public int Minutes { get; set; } +} + +public class ShiftBadge +{ + [JsonPropertyName("shiftName")] + public string ShiftName { get; set; } + + [JsonPropertyName("shiftTrip")] + public string ShiftTrip { get; set; } +} diff --git a/src/Costasdev.Busurbano.Backend/Types/Arrivals/StopArrivalsResponse.cs b/src/Costasdev.Busurbano.Backend/Types/Arrivals/StopArrivalsResponse.cs new file mode 100644 index 0000000..8c5438c --- /dev/null +++ b/src/Costasdev.Busurbano.Backend/Types/Arrivals/StopArrivalsResponse.cs @@ -0,0 +1,15 @@ +using System.Text.Json.Serialization; + +namespace Costasdev.Busurbano.Backend.Types.Arrivals; + +public class StopArrivalsResponse +{ + [JsonPropertyName("stopCode")] + public required string StopCode { get; set; } + + [JsonPropertyName("stopName")] + public required string StopName { get; set; } + + [JsonPropertyName("arrivals")] + public List<Arrival> Arrivals { get; set; } = []; +} diff --git a/src/Costasdev.Busurbano.Backend/Types/Otp/OtpModels.cs b/src/Costasdev.Busurbano.Backend/Types/Otp/OtpModels.cs index 1c47a4a..b67663d 100644 --- a/src/Costasdev.Busurbano.Backend/Types/Otp/OtpModels.cs +++ b/src/Costasdev.Busurbano.Backend/Types/Otp/OtpModels.cs @@ -98,7 +98,7 @@ public class OtpLeg public OtpGeometry? LegGeometry { get; set; } [JsonPropertyName("steps")] - public List<OtpWalkStep> Steps { get; set; } = new(); + public List<OtpWalkStep> Steps { get; set; } = []; [JsonPropertyName("headsign")] public string? Headsign { get; set; } @@ -113,7 +113,7 @@ public class OtpLeg public string? RouteTextColor { get; set; } [JsonPropertyName("intermediateStops")] - public List<OtpPlace> IntermediateStops { get; set; } = new(); + public List<OtpPlace> IntermediateStops { get; set; } = []; } public class OtpPlace diff --git a/src/Costasdev.Busurbano.Backend/Types/Planner/PlannerModels.cs b/src/Costasdev.Busurbano.Backend/Types/Planner/PlannerResponse.cs index c31d12a..c31d12a 100644 --- a/src/Costasdev.Busurbano.Backend/Types/Planner/PlannerModels.cs +++ b/src/Costasdev.Busurbano.Backend/Types/Planner/PlannerResponse.cs |
