tfl_api_wrapper/
client.rs1use crate::{
2 line::{
3 ArrivalPredictionsByLines, ArrivalPredictionsByLinesStopPointID, DisruptionByLines,
4 DisruptionByMode, LineStatusBetweenDates, LineStatusByIDs, LineStatusByModes,
5 LineStatusBySeverity, ListDisruptionCategories, ListLinesByID, ListLinesByModes,
6 ListLinesRoutesByModes, ListModes, ListRoutesForLineIDWithSequence, ListServiceTypes,
7 ListSeverityTypes, ListStationsByLines, RouteRequest, RouteRequestById,
8 SearchLineRoutesByQuery, StationTimetableByLine, StationTimetableWithDestinationByLine,
9 },
10 request::*,
11};
12
13pub struct Client {
15 pub app_key: String,
16 pub req_client: reqwest::Client,
17}
18
19impl Client {
20 pub fn new(app_key: String) -> Self {
22 let req_client = reqwest::Client::new();
23 Self {
24 app_key,
25 req_client,
26 }
27 }
28
29 pub fn api_version(&self) -> VersionRequest<'_> {
31 VersionRequest::new(self)
32 }
33
34 pub fn routes(&self) -> RouteRequest<'_> {
36 RouteRequest::new(self)
37 }
38
39 pub fn routes_by_line(&self) -> RouteRequestById<'_> {
41 RouteRequestById::new(self)
42 }
43
44 pub fn disruptions_by_mode(&self) -> DisruptionByMode<'_> {
46 DisruptionByMode::new(self)
47 }
48
49 pub fn disruptions_by_line(&self) -> DisruptionByLines<'_> {
51 DisruptionByLines::new(self)
52 }
53
54 pub fn arrival_predictions_by_lines(&self) -> ArrivalPredictionsByLines<'_> {
56 ArrivalPredictionsByLines::new(self)
57 }
58
59 pub fn arrival_predictions_by_lines_with_stoppoint(
61 &self,
62 ) -> ArrivalPredictionsByLinesStopPointID<'_> {
63 ArrivalPredictionsByLinesStopPointID::new(self)
64 }
65
66 pub fn list_stations_by_lines(&self) -> ListStationsByLines<'_> {
68 ListStationsByLines::new(self)
69 }
70
71 pub fn list_disruption_categories(&self) -> ListDisruptionCategories<'_> {
73 ListDisruptionCategories::new(self)
74 }
75
76 pub fn list_modes(&self) -> ListModes<'_> {
78 ListModes::new(self)
79 }
80
81 pub fn list_service_types(&self) -> ListServiceTypes<'_> {
83 ListServiceTypes::new(self)
84 }
85
86 pub fn list_severity_types(&self) -> ListSeverityTypes<'_> {
88 ListSeverityTypes::new(self)
89 }
90
91 pub fn list_lines_routes_by_modes(&self) -> ListLinesRoutesByModes<'_> {
93 ListLinesRoutesByModes::new(self)
94 }
95
96 pub fn list_routes_by_line_with_sequence(&self) -> ListRoutesForLineIDWithSequence<'_> {
98 ListRoutesForLineIDWithSequence::new(self)
99 }
100
101 pub fn list_lines_by_id(&self) -> ListLinesByID<'_> {
103 ListLinesByID::new(self)
104 }
105
106 pub fn list_lines_by_modes(&self) -> ListLinesByModes<'_> {
108 ListLinesByModes::new(self)
109 }
110
111 pub fn line_status_by_severity(&self) -> LineStatusBySeverity<'_> {
113 LineStatusBySeverity::new(self)
114 }
115
116 pub fn line_status_between_dates(&self) -> LineStatusBetweenDates<'_> {
118 LineStatusBetweenDates::new(self)
119 }
120
121 pub fn line_status_by_modes(&self) -> LineStatusByModes<'_> {
123 LineStatusByModes::new(self)
124 }
125
126 pub fn line_status_by_ids(&self) -> LineStatusByIDs<'_> {
128 LineStatusByIDs::new(self)
129 }
130
131 pub fn station_timetable_by_line(&self) -> StationTimetableByLine<'_> {
133 StationTimetableByLine::new(self)
134 }
135
136 pub fn station_timetable_with_destination_by_line(
138 &self,
139 ) -> StationTimetableWithDestinationByLine<'_> {
140 StationTimetableWithDestinationByLine::new(self)
141 }
142
143 pub fn search_line_routes_by_query(&self) -> SearchLineRoutesByQuery<'_> {
145 SearchLineRoutesByQuery::new(self)
146 }
147}