osdm_sys/apis/
passengers_api.rs

1/*
2 * UIC 90918-10 - OSDM
3 *
4 * Specifications for the OSDM API standard. The OSDM specification supports two modes of operation: Retailer Mode and Distributor Mode. The API works identically in both modes, except that in distributor mode the API also returns fare information.  The following resources are key to get started:    -  [Processes](https://osdm.io/spec/processes/)   -  [Models](https://osdm.io/spec/models/)   -  [Getting started](https://osdm.io/spec/getting-started/) 
5 *
6 * The version of the OpenAPI document: 3.7.0
7 * Contact: osdm@uic.org
8 * Generated by: https://openapi-generator.tech
9 */
10
11
12use reqwest;
13use serde::{Deserialize, Serialize, de::Error as _};
14use crate::{apis::ResponseContent, models};
15use super::{Error, configuration, ContentType};
16
17
18/// struct for typed errors of method [`get_booking_passengers`]
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum GetBookingPassengersError {
22    Status400(models::Problem),
23    Status401(models::Problem),
24    Status403(models::Problem),
25    Status404(models::Problem),
26    Status406(models::Problem),
27    Status415(models::Problem),
28    Status500(models::Problem),
29    Status501(models::Problem),
30    Status503(models::Problem),
31    DefaultResponse(models::Problem),
32    UnknownValue(serde_json::Value),
33}
34
35/// struct for typed errors of method [`get_booking_passengers_id`]
36#[derive(Debug, Clone, Serialize, Deserialize)]
37#[serde(untagged)]
38pub enum GetBookingPassengersIdError {
39    Status400(models::Problem),
40    Status401(models::Problem),
41    Status403(models::Problem),
42    Status404(models::Problem),
43    Status406(models::Problem),
44    Status415(models::Problem),
45    Status500(models::Problem),
46    Status501(models::Problem),
47    Status503(models::Problem),
48    DefaultResponse(models::Problem),
49    UnknownValue(serde_json::Value),
50}
51
52/// struct for typed errors of method [`patch_booking_passenger`]
53#[derive(Debug, Clone, Serialize, Deserialize)]
54#[serde(untagged)]
55pub enum PatchBookingPassengerError {
56    Status400(models::Problem),
57    Status401(models::Problem),
58    Status403(models::Problem),
59    Status404(models::Problem),
60    Status406(models::Problem),
61    Status409(models::Problem),
62    Status415(models::Problem),
63    Status500(models::Problem),
64    Status501(models::Problem),
65    Status503(models::Problem),
66    DefaultResponse(models::Problem),
67    UnknownValue(serde_json::Value),
68}
69
70/// struct for typed errors of method [`patch_booking_passengers`]
71#[derive(Debug, Clone, Serialize, Deserialize)]
72#[serde(untagged)]
73pub enum PatchBookingPassengersError {
74    Status400(models::Problem),
75    Status401(models::Problem),
76    Status403(models::Problem),
77    Status404(models::Problem),
78    Status406(models::Problem),
79    Status409(models::Problem),
80    Status415(models::Problem),
81    Status500(models::Problem),
82    Status501(models::Problem),
83    Status503(models::Problem),
84    DefaultResponse(models::Problem),
85    UnknownValue(serde_json::Value),
86}
87
88
89pub async fn get_booking_passengers(configuration: &configuration::Configuration, booking_id: &str, requestor: Option<&str>, accept_language: Option<&str>, traceparent: Option<&str>, tracestate: Option<&str>) -> Result<models::PassengersCollectionResponse, Error<GetBookingPassengersError>> {
90    // add a prefix to parameters to efficiently prevent name collisions
91    let p_path_booking_id = booking_id;
92    let p_header_requestor = requestor;
93    let p_header_accept_language = accept_language;
94    let p_header_traceparent = traceparent;
95    let p_header_tracestate = tracestate;
96
97    let uri_str = format!("{}/bookings/{bookingId}/passengers", configuration.base_path, bookingId=crate::apis::urlencode(p_path_booking_id));
98    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
99
100    if let Some(ref user_agent) = configuration.user_agent {
101        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
102    }
103    if let Some(param_value) = p_header_requestor {
104        req_builder = req_builder.header("Requestor", param_value.to_string());
105    }
106    if let Some(param_value) = p_header_accept_language {
107        req_builder = req_builder.header("Accept-Language", param_value.to_string());
108    }
109    if let Some(param_value) = p_header_traceparent {
110        req_builder = req_builder.header("traceparent", param_value.to_string());
111    }
112    if let Some(param_value) = p_header_tracestate {
113        req_builder = req_builder.header("tracestate", param_value.to_string());
114    }
115    if let Some(ref token) = configuration.oauth_access_token {
116        req_builder = req_builder.bearer_auth(token.to_owned());
117    };
118
119    let req = req_builder.build()?;
120    let resp = configuration.client.execute(req).await?;
121
122    let status = resp.status();
123    let content_type = resp
124        .headers()
125        .get("content-type")
126        .and_then(|v| v.to_str().ok())
127        .unwrap_or("application/octet-stream");
128    let content_type = super::ContentType::from(content_type);
129
130    if !status.is_client_error() && !status.is_server_error() {
131        let content = resp.text().await?;
132        match content_type {
133            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
134            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::PassengersCollectionResponse`"))),
135            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::PassengersCollectionResponse`")))),
136        }
137    } else {
138        let content = resp.text().await?;
139        let entity: Option<GetBookingPassengersError> = serde_json::from_str(&content).ok();
140        Err(Error::ResponseError(ResponseContent { status, content, entity }))
141    }
142}
143
144pub async fn get_booking_passengers_id(configuration: &configuration::Configuration, booking_id: &str, passenger_id: &str, requestor: Option<&str>, accept_language: Option<&str>, traceparent: Option<&str>, tracestate: Option<&str>) -> Result<models::PassengerResponse, Error<GetBookingPassengersIdError>> {
145    // add a prefix to parameters to efficiently prevent name collisions
146    let p_path_booking_id = booking_id;
147    let p_path_passenger_id = passenger_id;
148    let p_header_requestor = requestor;
149    let p_header_accept_language = accept_language;
150    let p_header_traceparent = traceparent;
151    let p_header_tracestate = tracestate;
152
153    let uri_str = format!("{}/bookings/{bookingId}/passengers/{passengerId}", configuration.base_path, bookingId=crate::apis::urlencode(p_path_booking_id), passengerId=crate::apis::urlencode(p_path_passenger_id));
154    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
155
156    if let Some(ref user_agent) = configuration.user_agent {
157        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
158    }
159    if let Some(param_value) = p_header_requestor {
160        req_builder = req_builder.header("Requestor", param_value.to_string());
161    }
162    if let Some(param_value) = p_header_accept_language {
163        req_builder = req_builder.header("Accept-Language", param_value.to_string());
164    }
165    if let Some(param_value) = p_header_traceparent {
166        req_builder = req_builder.header("traceparent", param_value.to_string());
167    }
168    if let Some(param_value) = p_header_tracestate {
169        req_builder = req_builder.header("tracestate", param_value.to_string());
170    }
171    if let Some(ref token) = configuration.oauth_access_token {
172        req_builder = req_builder.bearer_auth(token.to_owned());
173    };
174
175    let req = req_builder.build()?;
176    let resp = configuration.client.execute(req).await?;
177
178    let status = resp.status();
179    let content_type = resp
180        .headers()
181        .get("content-type")
182        .and_then(|v| v.to_str().ok())
183        .unwrap_or("application/octet-stream");
184    let content_type = super::ContentType::from(content_type);
185
186    if !status.is_client_error() && !status.is_server_error() {
187        let content = resp.text().await?;
188        match content_type {
189            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
190            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::PassengerResponse`"))),
191            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::PassengerResponse`")))),
192        }
193    } else {
194        let content = resp.text().await?;
195        let entity: Option<GetBookingPassengersIdError> = serde_json::from_str(&content).ok();
196        Err(Error::ResponseError(ResponseContent { status, content, entity }))
197    }
198}
199
200pub async fn patch_booking_passenger(configuration: &configuration::Configuration, booking_id: &str, passenger_id: &str, passenger: models::Passenger, requestor: Option<&str>, accept_language: Option<&str>, traceparent: Option<&str>, tracestate: Option<&str>) -> Result<models::PassengerResponse, Error<PatchBookingPassengerError>> {
201    // add a prefix to parameters to efficiently prevent name collisions
202    let p_path_booking_id = booking_id;
203    let p_path_passenger_id = passenger_id;
204    let p_body_passenger = passenger;
205    let p_header_requestor = requestor;
206    let p_header_accept_language = accept_language;
207    let p_header_traceparent = traceparent;
208    let p_header_tracestate = tracestate;
209
210    let uri_str = format!("{}/bookings/{bookingId}/passengers/{passengerId}", configuration.base_path, bookingId=crate::apis::urlencode(p_path_booking_id), passengerId=crate::apis::urlencode(p_path_passenger_id));
211    let mut req_builder = configuration.client.request(reqwest::Method::PATCH, &uri_str);
212
213    if let Some(ref user_agent) = configuration.user_agent {
214        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
215    }
216    if let Some(param_value) = p_header_requestor {
217        req_builder = req_builder.header("Requestor", param_value.to_string());
218    }
219    if let Some(param_value) = p_header_accept_language {
220        req_builder = req_builder.header("Accept-Language", param_value.to_string());
221    }
222    if let Some(param_value) = p_header_traceparent {
223        req_builder = req_builder.header("traceparent", param_value.to_string());
224    }
225    if let Some(param_value) = p_header_tracestate {
226        req_builder = req_builder.header("tracestate", param_value.to_string());
227    }
228    if let Some(ref token) = configuration.oauth_access_token {
229        req_builder = req_builder.bearer_auth(token.to_owned());
230    };
231    req_builder = req_builder.json(&p_body_passenger);
232
233    let req = req_builder.build()?;
234    let resp = configuration.client.execute(req).await?;
235
236    let status = resp.status();
237    let content_type = resp
238        .headers()
239        .get("content-type")
240        .and_then(|v| v.to_str().ok())
241        .unwrap_or("application/octet-stream");
242    let content_type = super::ContentType::from(content_type);
243
244    if !status.is_client_error() && !status.is_server_error() {
245        let content = resp.text().await?;
246        match content_type {
247            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
248            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::PassengerResponse`"))),
249            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::PassengerResponse`")))),
250        }
251    } else {
252        let content = resp.text().await?;
253        let entity: Option<PatchBookingPassengerError> = serde_json::from_str(&content).ok();
254        Err(Error::ResponseError(ResponseContent { status, content, entity }))
255    }
256}
257
258pub async fn patch_booking_passengers(configuration: &configuration::Configuration, booking_id: &str, passengers_batch_update_request: models::PassengersBatchUpdateRequest, requestor: Option<&str>, accept_language: Option<&str>, traceparent: Option<&str>, tracestate: Option<&str>) -> Result<models::PassengersCollectionResponse, Error<PatchBookingPassengersError>> {
259    // add a prefix to parameters to efficiently prevent name collisions
260    let p_path_booking_id = booking_id;
261    let p_body_passengers_batch_update_request = passengers_batch_update_request;
262    let p_header_requestor = requestor;
263    let p_header_accept_language = accept_language;
264    let p_header_traceparent = traceparent;
265    let p_header_tracestate = tracestate;
266
267    let uri_str = format!("{}/bookings/{bookingId}/passengers", configuration.base_path, bookingId=crate::apis::urlencode(p_path_booking_id));
268    let mut req_builder = configuration.client.request(reqwest::Method::PATCH, &uri_str);
269
270    if let Some(ref user_agent) = configuration.user_agent {
271        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
272    }
273    if let Some(param_value) = p_header_requestor {
274        req_builder = req_builder.header("Requestor", param_value.to_string());
275    }
276    if let Some(param_value) = p_header_accept_language {
277        req_builder = req_builder.header("Accept-Language", param_value.to_string());
278    }
279    if let Some(param_value) = p_header_traceparent {
280        req_builder = req_builder.header("traceparent", param_value.to_string());
281    }
282    if let Some(param_value) = p_header_tracestate {
283        req_builder = req_builder.header("tracestate", param_value.to_string());
284    }
285    if let Some(ref token) = configuration.oauth_access_token {
286        req_builder = req_builder.bearer_auth(token.to_owned());
287    };
288    req_builder = req_builder.json(&p_body_passengers_batch_update_request);
289
290    let req = req_builder.build()?;
291    let resp = configuration.client.execute(req).await?;
292
293    let status = resp.status();
294    let content_type = resp
295        .headers()
296        .get("content-type")
297        .and_then(|v| v.to_str().ok())
298        .unwrap_or("application/octet-stream");
299    let content_type = super::ContentType::from(content_type);
300
301    if !status.is_client_error() && !status.is_server_error() {
302        let content = resp.text().await?;
303        match content_type {
304            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
305            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::PassengersCollectionResponse`"))),
306            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::PassengersCollectionResponse`")))),
307        }
308    } else {
309        let content = resp.text().await?;
310        let entity: Option<PatchBookingPassengersError> = serde_json::from_str(&content).ok();
311        Err(Error::ResponseError(ResponseContent { status, content, entity }))
312    }
313}
314