1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
use reqwest;
use super::{Error, configuration};
use amazon_sp_api_shared::{request::UrlBuilder, error::ResponseError};
pub async fn submit_shipment_confirmations(configuration: &configuration::Configuration, body: crate::models::SubmitShipmentConfirmationsRequest) -> Result<crate::models::SubmitShipmentConfirmationsResponse, Error> {
let local_var_configuration = configuration;
let local_var_client = &local_var_configuration.client;
let local_var_uri_str = format!("{}/vendor/shipping/v1/shipmentConfirmations", local_var_configuration.base_path);
let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
#[allow(unused_mut)]
let mut url_builder = UrlBuilder::parse(&local_var_uri_str)?;
let url = url_builder.build()?;
let access_token = if let Some(ref rdt) = local_var_configuration.rdt {
Some(rdt.token()?)
} else {
if let Some(ref auth) = local_var_configuration.auth {
Some(auth.get_access_token(&local_var_configuration.client).await?)
} else {
None
}
};
if let Some(ref local_var_aws_v4_key) = local_var_configuration.aws_v4_key {
let local_var_new_headers = match local_var_aws_v4_key.sign(
url.as_str(),
"POST",
access_token.clone(),
&serde_json::to_string(&body).expect("param should serialize to string"),
) {
Ok(new_headers) => new_headers,
Err(err) => return Err(Error::AWSV4SignatureError(err)),
};
for (local_var_name, local_var_value) in local_var_new_headers.iter() {
local_var_req_builder = local_var_req_builder.header(local_var_name.as_str(), local_var_value.as_str());
}
}
if let Some(token) = access_token {
local_var_req_builder = local_var_req_builder.header("x-amz-access-token", token.as_str());
}
if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
}
local_var_req_builder = local_var_req_builder.json(&body);
let mut local_var_req = local_var_req_builder.build()?;
*local_var_req.url_mut() = url;
let local_var_resp = local_var_client.execute(local_var_req).await?;
let local_var_status = local_var_resp.status();
let local_var_content = local_var_resp.text().await?;
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
serde_json::from_str(&local_var_content).map_err(Error::from)
} else {
let error_list = serde_json::from_str::<amazon_sp_api_shared::request::ErrorList>(&local_var_content).ok();
let local_var_error = ResponseError { status: local_var_status, content: local_var_content, error_list: error_list.map(|e| e.errors) };
Err(Error::ResponseError(local_var_error))
}
}