osdm_sys/apis/
offer_overview_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_offer_overview_route`]
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum GetOfferOverviewRouteError {
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    UnknownValue(serde_json::Value),
31}
32
33/// struct for typed errors of method [`get_offer_overview_trip`]
34#[derive(Debug, Clone, Serialize, Deserialize)]
35#[serde(untagged)]
36pub enum GetOfferOverviewTripError {
37    Status400(models::Problem),
38    Status401(models::Problem),
39    Status403(models::Problem),
40    Status404(models::Problem),
41    Status406(models::Problem),
42    Status415(models::Problem),
43    Status500(models::Problem),
44    Status501(models::Problem),
45    UnknownValue(serde_json::Value),
46}
47
48
49/// Returns an overview of prices for a given route search and criteria. The overview does not contain detailed offer information, but only the prices. 
50pub async fn get_offer_overview_route(configuration: &configuration::Configuration, offer_overview_route_request: models::OfferOverviewRouteRequest, requestor: Option<&str>, accept_language: Option<&str>, traceparent: Option<&str>, tracestate: Option<&str>) -> Result<models::OfferOverviewRouteResponse, Error<GetOfferOverviewRouteError>> {
51    // add a prefix to parameters to efficiently prevent name collisions
52    let p_body_offer_overview_route_request = offer_overview_route_request;
53    let p_header_requestor = requestor;
54    let p_header_accept_language = accept_language;
55    let p_header_traceparent = traceparent;
56    let p_header_tracestate = tracestate;
57
58    let uri_str = format!("{}/offer-overview-route", configuration.base_path);
59    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
60
61    if let Some(ref user_agent) = configuration.user_agent {
62        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
63    }
64    if let Some(param_value) = p_header_requestor {
65        req_builder = req_builder.header("Requestor", param_value.to_string());
66    }
67    if let Some(param_value) = p_header_accept_language {
68        req_builder = req_builder.header("Accept-Language", param_value.to_string());
69    }
70    if let Some(param_value) = p_header_traceparent {
71        req_builder = req_builder.header("traceparent", param_value.to_string());
72    }
73    if let Some(param_value) = p_header_tracestate {
74        req_builder = req_builder.header("tracestate", param_value.to_string());
75    }
76    if let Some(ref token) = configuration.oauth_access_token {
77        req_builder = req_builder.bearer_auth(token.to_owned());
78    };
79    req_builder = req_builder.json(&p_body_offer_overview_route_request);
80
81    let req = req_builder.build()?;
82    let resp = configuration.client.execute(req).await?;
83
84    let status = resp.status();
85    let content_type = resp
86        .headers()
87        .get("content-type")
88        .and_then(|v| v.to_str().ok())
89        .unwrap_or("application/octet-stream");
90    let content_type = super::ContentType::from(content_type);
91
92    if !status.is_client_error() && !status.is_server_error() {
93        let content = resp.text().await?;
94        match content_type {
95            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
96            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::OfferOverviewRouteResponse`"))),
97            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::OfferOverviewRouteResponse`")))),
98        }
99    } else {
100        let content = resp.text().await?;
101        let entity: Option<GetOfferOverviewRouteError> = serde_json::from_str(&content).ok();
102        Err(Error::ResponseError(ResponseContent { status, content, entity }))
103    }
104}
105
106/// Returns an overview of prices for a given trip search and criteria. The overview does not contain detailed offer information, but only the prices. 
107pub async fn get_offer_overview_trip(configuration: &configuration::Configuration, offer_overview_trip_request: models::OfferOverviewTripRequest, requestor: Option<&str>, accept_language: Option<&str>, traceparent: Option<&str>, tracestate: Option<&str>) -> Result<models::OfferOverviewTripResponse, Error<GetOfferOverviewTripError>> {
108    // add a prefix to parameters to efficiently prevent name collisions
109    let p_body_offer_overview_trip_request = offer_overview_trip_request;
110    let p_header_requestor = requestor;
111    let p_header_accept_language = accept_language;
112    let p_header_traceparent = traceparent;
113    let p_header_tracestate = tracestate;
114
115    let uri_str = format!("{}/offer-overview-trip", configuration.base_path);
116    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
117
118    if let Some(ref user_agent) = configuration.user_agent {
119        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
120    }
121    if let Some(param_value) = p_header_requestor {
122        req_builder = req_builder.header("Requestor", param_value.to_string());
123    }
124    if let Some(param_value) = p_header_accept_language {
125        req_builder = req_builder.header("Accept-Language", param_value.to_string());
126    }
127    if let Some(param_value) = p_header_traceparent {
128        req_builder = req_builder.header("traceparent", param_value.to_string());
129    }
130    if let Some(param_value) = p_header_tracestate {
131        req_builder = req_builder.header("tracestate", param_value.to_string());
132    }
133    if let Some(ref token) = configuration.oauth_access_token {
134        req_builder = req_builder.bearer_auth(token.to_owned());
135    };
136    req_builder = req_builder.json(&p_body_offer_overview_trip_request);
137
138    let req = req_builder.build()?;
139    let resp = configuration.client.execute(req).await?;
140
141    let status = resp.status();
142    let content_type = resp
143        .headers()
144        .get("content-type")
145        .and_then(|v| v.to_str().ok())
146        .unwrap_or("application/octet-stream");
147    let content_type = super::ContentType::from(content_type);
148
149    if !status.is_client_error() && !status.is_server_error() {
150        let content = resp.text().await?;
151        match content_type {
152            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
153            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::OfferOverviewTripResponse`"))),
154            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::OfferOverviewTripResponse`")))),
155        }
156    } else {
157        let content = resp.text().await?;
158        let entity: Option<GetOfferOverviewTripError> = serde_json::from_str(&content).ok();
159        Err(Error::ResponseError(ResponseContent { status, content, entity }))
160    }
161}
162