1use reqwest;
13use serde::{Deserialize, Serialize, de::Error as _};
14use crate::{apis::ResponseContent, models};
15use super::{Error, configuration, ContentType};
16
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum DeleteReleaseOffersError {
22 Status400(models::Problem),
23 Status401(models::Problem),
24 Status403(models::Problem),
25 Status404(models::Problem),
26 Status406(models::Problem),
27 Status409(models::Problem),
28 Status415(models::Problem),
29 Status500(models::Problem),
30 Status501(models::Problem),
31 Status503(models::Problem),
32 DefaultResponse(models::Problem),
33 UnknownValue(serde_json::Value),
34}
35
36#[derive(Debug, Clone, Serialize, Deserialize)]
38#[serde(untagged)]
39pub enum GetReleaseOfferError {
40 Status400(models::Problem),
41 Status401(models::Problem),
42 Status403(models::Problem),
43 Status404(models::Problem),
44 Status406(models::Problem),
45 Status415(models::Problem),
46 Status500(models::Problem),
47 Status501(models::Problem),
48 Status503(models::Problem),
49 DefaultResponse(models::Problem),
50 UnknownValue(serde_json::Value),
51}
52
53#[derive(Debug, Clone, Serialize, Deserialize)]
55#[serde(untagged)]
56pub enum PatchReleaseOffersError {
57 Status400(models::Problem),
58 Status401(models::Problem),
59 Status403(models::Problem),
60 Status404(models::Problem),
61 Status406(models::Problem),
62 Status409(models::Problem),
63 Status415(models::Problem),
64 Status500(models::Problem),
65 Status501(models::Problem),
66 Status503(models::Problem),
67 DefaultResponse(models::Problem),
68 UnknownValue(serde_json::Value),
69}
70
71#[derive(Debug, Clone, Serialize, Deserialize)]
73#[serde(untagged)]
74pub enum PostReleaseOffersError {
75 Status400(models::Problem),
76 Status401(models::Problem),
77 Status403(models::Problem),
78 Status404(models::Problem),
79 Status406(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 delete_release_offers(configuration: &configuration::Configuration, booking_id: &str, release_offer_id: &str, requestor: Option<&str>, accept_language: Option<&str>, traceparent: Option<&str>, tracestate: Option<&str>) -> Result<(), Error<DeleteReleaseOffersError>> {
90 let p_path_booking_id = booking_id;
92 let p_path_release_offer_id = release_offer_id;
93 let p_header_requestor = requestor;
94 let p_header_accept_language = accept_language;
95 let p_header_traceparent = traceparent;
96 let p_header_tracestate = tracestate;
97
98 let uri_str = format!("{}/bookings/{bookingId}/release-offers/{releaseOfferId}", configuration.base_path, bookingId=crate::apis::urlencode(p_path_booking_id), releaseOfferId=crate::apis::urlencode(p_path_release_offer_id));
99 let mut req_builder = configuration.client.request(reqwest::Method::DELETE, &uri_str);
100
101 if let Some(ref user_agent) = configuration.user_agent {
102 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
103 }
104 if let Some(param_value) = p_header_requestor {
105 req_builder = req_builder.header("Requestor", param_value.to_string());
106 }
107 if let Some(param_value) = p_header_accept_language {
108 req_builder = req_builder.header("Accept-Language", param_value.to_string());
109 }
110 if let Some(param_value) = p_header_traceparent {
111 req_builder = req_builder.header("traceparent", param_value.to_string());
112 }
113 if let Some(param_value) = p_header_tracestate {
114 req_builder = req_builder.header("tracestate", param_value.to_string());
115 }
116 if let Some(ref token) = configuration.oauth_access_token {
117 req_builder = req_builder.bearer_auth(token.to_owned());
118 };
119
120 let req = req_builder.build()?;
121 let resp = configuration.client.execute(req).await?;
122
123 let status = resp.status();
124
125 if !status.is_client_error() && !status.is_server_error() {
126 Ok(())
127 } else {
128 let content = resp.text().await?;
129 let entity: Option<DeleteReleaseOffersError> = serde_json::from_str(&content).ok();
130 Err(Error::ResponseError(ResponseContent { status, content, entity }))
131 }
132}
133
134pub async fn get_release_offer(configuration: &configuration::Configuration, booking_id: &str, release_offer_id: &str, requestor: Option<&str>, accept_language: Option<&str>, traceparent: Option<&str>, tracestate: Option<&str>, x_accept_namespace: Option<&str>) -> Result<models::ReleaseOfferResponse, Error<GetReleaseOfferError>> {
135 let p_path_booking_id = booking_id;
137 let p_path_release_offer_id = release_offer_id;
138 let p_header_requestor = requestor;
139 let p_header_accept_language = accept_language;
140 let p_header_traceparent = traceparent;
141 let p_header_tracestate = tracestate;
142 let p_header_x_accept_namespace = x_accept_namespace;
143
144 let uri_str = format!("{}/bookings/{bookingId}/release-offers/{releaseOfferId}", configuration.base_path, bookingId=crate::apis::urlencode(p_path_booking_id), releaseOfferId=crate::apis::urlencode(p_path_release_offer_id));
145 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
146
147 if let Some(ref user_agent) = configuration.user_agent {
148 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
149 }
150 if let Some(param_value) = p_header_requestor {
151 req_builder = req_builder.header("Requestor", param_value.to_string());
152 }
153 if let Some(param_value) = p_header_accept_language {
154 req_builder = req_builder.header("Accept-Language", param_value.to_string());
155 }
156 if let Some(param_value) = p_header_traceparent {
157 req_builder = req_builder.header("traceparent", param_value.to_string());
158 }
159 if let Some(param_value) = p_header_tracestate {
160 req_builder = req_builder.header("tracestate", param_value.to_string());
161 }
162 if let Some(param_value) = p_header_x_accept_namespace {
163 req_builder = req_builder.header("x-accept-namespace", param_value.to_string());
164 }
165 if let Some(ref token) = configuration.oauth_access_token {
166 req_builder = req_builder.bearer_auth(token.to_owned());
167 };
168
169 let req = req_builder.build()?;
170 let resp = configuration.client.execute(req).await?;
171
172 let status = resp.status();
173 let content_type = resp
174 .headers()
175 .get("content-type")
176 .and_then(|v| v.to_str().ok())
177 .unwrap_or("application/octet-stream");
178 let content_type = super::ContentType::from(content_type);
179
180 if !status.is_client_error() && !status.is_server_error() {
181 let content = resp.text().await?;
182 match content_type {
183 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
184 ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ReleaseOfferResponse`"))),
185 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::ReleaseOfferResponse`")))),
186 }
187 } else {
188 let content = resp.text().await?;
189 let entity: Option<GetReleaseOfferError> = serde_json::from_str(&content).ok();
190 Err(Error::ResponseError(ResponseContent { status, content, entity }))
191 }
192}
193
194pub async fn patch_release_offers(configuration: &configuration::Configuration, booking_id: &str, release_offer_id: &str, release_offer_patch_request: models::ReleaseOfferPatchRequest, requestor: Option<&str>, accept_language: Option<&str>, traceparent: Option<&str>, tracestate: Option<&str>, idempotency_key: Option<&str>, x_accept_namespace: Option<&str>) -> Result<models::ReleaseOfferResponse, Error<PatchReleaseOffersError>> {
195 let p_path_booking_id = booking_id;
197 let p_path_release_offer_id = release_offer_id;
198 let p_body_release_offer_patch_request = release_offer_patch_request;
199 let p_header_requestor = requestor;
200 let p_header_accept_language = accept_language;
201 let p_header_traceparent = traceparent;
202 let p_header_tracestate = tracestate;
203 let p_header_idempotency_key = idempotency_key;
204 let p_header_x_accept_namespace = x_accept_namespace;
205
206 let uri_str = format!("{}/bookings/{bookingId}/release-offers/{releaseOfferId}", configuration.base_path, bookingId=crate::apis::urlencode(p_path_booking_id), releaseOfferId=crate::apis::urlencode(p_path_release_offer_id));
207 let mut req_builder = configuration.client.request(reqwest::Method::PATCH, &uri_str);
208
209 if let Some(ref user_agent) = configuration.user_agent {
210 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
211 }
212 if let Some(param_value) = p_header_requestor {
213 req_builder = req_builder.header("Requestor", param_value.to_string());
214 }
215 if let Some(param_value) = p_header_accept_language {
216 req_builder = req_builder.header("Accept-Language", param_value.to_string());
217 }
218 if let Some(param_value) = p_header_traceparent {
219 req_builder = req_builder.header("traceparent", param_value.to_string());
220 }
221 if let Some(param_value) = p_header_tracestate {
222 req_builder = req_builder.header("tracestate", param_value.to_string());
223 }
224 if let Some(param_value) = p_header_idempotency_key {
225 req_builder = req_builder.header("Idempotency-Key", param_value.to_string());
226 }
227 if let Some(param_value) = p_header_x_accept_namespace {
228 req_builder = req_builder.header("x-accept-namespace", param_value.to_string());
229 }
230 if let Some(ref token) = configuration.oauth_access_token {
231 req_builder = req_builder.bearer_auth(token.to_owned());
232 };
233 req_builder = req_builder.json(&p_body_release_offer_patch_request);
234
235 let req = req_builder.build()?;
236 let resp = configuration.client.execute(req).await?;
237
238 let status = resp.status();
239 let content_type = resp
240 .headers()
241 .get("content-type")
242 .and_then(|v| v.to_str().ok())
243 .unwrap_or("application/octet-stream");
244 let content_type = super::ContentType::from(content_type);
245
246 if !status.is_client_error() && !status.is_server_error() {
247 let content = resp.text().await?;
248 match content_type {
249 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
250 ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ReleaseOfferResponse`"))),
251 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::ReleaseOfferResponse`")))),
252 }
253 } else {
254 let content = resp.text().await?;
255 let entity: Option<PatchReleaseOffersError> = serde_json::from_str(&content).ok();
256 Err(Error::ResponseError(ResponseContent { status, content, entity }))
257 }
258}
259
260pub async fn post_release_offers(configuration: &configuration::Configuration, booking_id: &str, release_offer_request: models::ReleaseOfferRequest, requestor: Option<&str>, accept_language: Option<&str>, traceparent: Option<&str>, tracestate: Option<&str>, idempotency_key: Option<&str>, x_accept_namespace: Option<&str>) -> Result<models::ReleaseOfferCollectionResponse, Error<PostReleaseOffersError>> {
261 let p_path_booking_id = booking_id;
263 let p_body_release_offer_request = release_offer_request;
264 let p_header_requestor = requestor;
265 let p_header_accept_language = accept_language;
266 let p_header_traceparent = traceparent;
267 let p_header_tracestate = tracestate;
268 let p_header_idempotency_key = idempotency_key;
269 let p_header_x_accept_namespace = x_accept_namespace;
270
271 let uri_str = format!("{}/bookings/{bookingId}/release-offers", configuration.base_path, bookingId=crate::apis::urlencode(p_path_booking_id));
272 let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
273
274 if let Some(ref user_agent) = configuration.user_agent {
275 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
276 }
277 if let Some(param_value) = p_header_requestor {
278 req_builder = req_builder.header("Requestor", param_value.to_string());
279 }
280 if let Some(param_value) = p_header_accept_language {
281 req_builder = req_builder.header("Accept-Language", param_value.to_string());
282 }
283 if let Some(param_value) = p_header_traceparent {
284 req_builder = req_builder.header("traceparent", param_value.to_string());
285 }
286 if let Some(param_value) = p_header_tracestate {
287 req_builder = req_builder.header("tracestate", param_value.to_string());
288 }
289 if let Some(param_value) = p_header_idempotency_key {
290 req_builder = req_builder.header("Idempotency-Key", param_value.to_string());
291 }
292 if let Some(param_value) = p_header_x_accept_namespace {
293 req_builder = req_builder.header("x-accept-namespace", param_value.to_string());
294 }
295 if let Some(ref token) = configuration.oauth_access_token {
296 req_builder = req_builder.bearer_auth(token.to_owned());
297 };
298 req_builder = req_builder.json(&p_body_release_offer_request);
299
300 let req = req_builder.build()?;
301 let resp = configuration.client.execute(req).await?;
302
303 let status = resp.status();
304 let content_type = resp
305 .headers()
306 .get("content-type")
307 .and_then(|v| v.to_str().ok())
308 .unwrap_or("application/octet-stream");
309 let content_type = super::ContentType::from(content_type);
310
311 if !status.is_client_error() && !status.is_server_error() {
312 let content = resp.text().await?;
313 match content_type {
314 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
315 ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ReleaseOfferCollectionResponse`"))),
316 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::ReleaseOfferCollectionResponse`")))),
317 }
318 } else {
319 let content = resp.text().await?;
320 let entity: Option<PostReleaseOffersError> = serde_json::from_str(&content).ok();
321 Err(Error::ResponseError(ResponseContent { status, content, entity }))
322 }
323}
324