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 GetBrowseNodeReturnTopicsError {
22 Status400(models::customer_feedback_2024_06_01::ErrorList),
23 Status403(models::customer_feedback_2024_06_01::ErrorList),
24 Status404(models::customer_feedback_2024_06_01::ErrorList),
25 Status413(models::customer_feedback_2024_06_01::ErrorList),
26 Status415(models::customer_feedback_2024_06_01::ErrorList),
27 Status429(models::customer_feedback_2024_06_01::ErrorList),
28 Status500(models::customer_feedback_2024_06_01::ErrorList),
29 Status503(models::customer_feedback_2024_06_01::ErrorList),
30 UnknownValue(serde_json::Value),
31}
32
33#[derive(Debug, Clone, Serialize, Deserialize)]
35#[serde(untagged)]
36pub enum GetBrowseNodeReturnTrendsError {
37 Status400(models::customer_feedback_2024_06_01::ErrorList),
38 Status403(models::customer_feedback_2024_06_01::ErrorList),
39 Status404(models::customer_feedback_2024_06_01::ErrorList),
40 Status413(models::customer_feedback_2024_06_01::ErrorList),
41 Status415(models::customer_feedback_2024_06_01::ErrorList),
42 Status429(models::customer_feedback_2024_06_01::ErrorList),
43 Status500(models::customer_feedback_2024_06_01::ErrorList),
44 Status503(models::customer_feedback_2024_06_01::ErrorList),
45 UnknownValue(serde_json::Value),
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize)]
50#[serde(untagged)]
51pub enum GetBrowseNodeReviewTopicsError {
52 Status400(models::customer_feedback_2024_06_01::ErrorList),
53 Status403(models::customer_feedback_2024_06_01::ErrorList),
54 Status404(models::customer_feedback_2024_06_01::ErrorList),
55 Status413(models::customer_feedback_2024_06_01::ErrorList),
56 Status415(models::customer_feedback_2024_06_01::ErrorList),
57 Status429(models::customer_feedback_2024_06_01::ErrorList),
58 Status500(models::customer_feedback_2024_06_01::ErrorList),
59 Status503(models::customer_feedback_2024_06_01::ErrorList),
60 UnknownValue(serde_json::Value),
61}
62
63#[derive(Debug, Clone, Serialize, Deserialize)]
65#[serde(untagged)]
66pub enum GetBrowseNodeReviewTrendsError {
67 Status400(models::customer_feedback_2024_06_01::ErrorList),
68 Status403(models::customer_feedback_2024_06_01::ErrorList),
69 Status404(models::customer_feedback_2024_06_01::ErrorList),
70 Status413(models::customer_feedback_2024_06_01::ErrorList),
71 Status415(models::customer_feedback_2024_06_01::ErrorList),
72 Status429(models::customer_feedback_2024_06_01::ErrorList),
73 Status500(models::customer_feedback_2024_06_01::ErrorList),
74 Status503(models::customer_feedback_2024_06_01::ErrorList),
75 UnknownValue(serde_json::Value),
76}
77
78#[derive(Debug, Clone, Serialize, Deserialize)]
80#[serde(untagged)]
81pub enum GetItemBrowseNodeError {
82 Status400(models::customer_feedback_2024_06_01::ErrorList),
83 Status403(models::customer_feedback_2024_06_01::ErrorList),
84 Status404(models::customer_feedback_2024_06_01::ErrorList),
85 Status413(models::customer_feedback_2024_06_01::ErrorList),
86 Status415(models::customer_feedback_2024_06_01::ErrorList),
87 Status429(models::customer_feedback_2024_06_01::ErrorList),
88 Status500(models::customer_feedback_2024_06_01::ErrorList),
89 Status503(models::customer_feedback_2024_06_01::ErrorList),
90 UnknownValue(serde_json::Value),
91}
92
93#[derive(Debug, Clone, Serialize, Deserialize)]
95#[serde(untagged)]
96pub enum GetItemReviewTopicsError {
97 Status400(models::customer_feedback_2024_06_01::ErrorList),
98 Status403(models::customer_feedback_2024_06_01::ErrorList),
99 Status404(models::customer_feedback_2024_06_01::ErrorList),
100 Status413(models::customer_feedback_2024_06_01::ErrorList),
101 Status415(models::customer_feedback_2024_06_01::ErrorList),
102 Status429(models::customer_feedback_2024_06_01::ErrorList),
103 Status500(models::customer_feedback_2024_06_01::ErrorList),
104 Status503(models::customer_feedback_2024_06_01::ErrorList),
105 UnknownValue(serde_json::Value),
106}
107
108#[derive(Debug, Clone, Serialize, Deserialize)]
110#[serde(untagged)]
111pub enum GetItemReviewTrendsError {
112 Status400(models::customer_feedback_2024_06_01::ErrorList),
113 Status403(models::customer_feedback_2024_06_01::ErrorList),
114 Status404(models::customer_feedback_2024_06_01::ErrorList),
115 Status413(models::customer_feedback_2024_06_01::ErrorList),
116 Status415(models::customer_feedback_2024_06_01::ErrorList),
117 Status429(models::customer_feedback_2024_06_01::ErrorList),
118 Status500(models::customer_feedback_2024_06_01::ErrorList),
119 Status503(models::customer_feedback_2024_06_01::ErrorList),
120 UnknownValue(serde_json::Value),
121}
122
123
124pub async fn get_browse_node_return_topics(configuration: &configuration::Configuration, browse_node_id: &str, marketplace_id: &str) -> Result<models::customer_feedback_2024_06_01::BrowseNodeReturnTopicsResponse, Error<GetBrowseNodeReturnTopicsError>> {
126 let p_browse_node_id = browse_node_id;
128 let p_marketplace_id = marketplace_id;
129
130 let uri_str = format!("{}/customerFeedback/2024-06-01/browseNodes/{browseNodeId}/returns/topics", configuration.base_path, browseNodeId=crate::apis::urlencode(p_browse_node_id));
131 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
132
133 req_builder = req_builder.query(&[("marketplaceId", &p_marketplace_id.to_string())]);
134 if let Some(ref user_agent) = configuration.user_agent {
135 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
136 }
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::customer_feedback_2024_06_01::BrowseNodeReturnTopicsResponse`"))),
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::customer_feedback_2024_06_01::BrowseNodeReturnTopicsResponse`")))),
155 }
156 } else {
157 let content = resp.text().await?;
158 let entity: Option<GetBrowseNodeReturnTopicsError> = serde_json::from_str(&content).ok();
159 Err(Error::ResponseError(ResponseContent { status, content, entity }))
160 }
161}
162
163pub async fn get_browse_node_return_trends(configuration: &configuration::Configuration, browse_node_id: &str, marketplace_id: &str) -> Result<models::customer_feedback_2024_06_01::BrowseNodeReturnTrendsResponse, Error<GetBrowseNodeReturnTrendsError>> {
165 let p_browse_node_id = browse_node_id;
167 let p_marketplace_id = marketplace_id;
168
169 let uri_str = format!("{}/customerFeedback/2024-06-01/browseNodes/{browseNodeId}/returns/trends", configuration.base_path, browseNodeId=crate::apis::urlencode(p_browse_node_id));
170 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
171
172 req_builder = req_builder.query(&[("marketplaceId", &p_marketplace_id.to_string())]);
173 if let Some(ref user_agent) = configuration.user_agent {
174 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
175 }
176
177 let req = req_builder.build()?;
178 let resp = configuration.client.execute(req).await?;
179
180 let status = resp.status();
181 let content_type = resp
182 .headers()
183 .get("content-type")
184 .and_then(|v| v.to_str().ok())
185 .unwrap_or("application/octet-stream");
186 let content_type = super::ContentType::from(content_type);
187
188 if !status.is_client_error() && !status.is_server_error() {
189 let content = resp.text().await?;
190 match content_type {
191 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
192 ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::customer_feedback_2024_06_01::BrowseNodeReturnTrendsResponse`"))),
193 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::customer_feedback_2024_06_01::BrowseNodeReturnTrendsResponse`")))),
194 }
195 } else {
196 let content = resp.text().await?;
197 let entity: Option<GetBrowseNodeReturnTrendsError> = serde_json::from_str(&content).ok();
198 Err(Error::ResponseError(ResponseContent { status, content, entity }))
199 }
200}
201
202pub async fn get_browse_node_review_topics(configuration: &configuration::Configuration, browse_node_id: &str, marketplace_id: &str, sort_by: &str) -> Result<models::customer_feedback_2024_06_01::BrowseNodeReviewTopicsResponse, Error<GetBrowseNodeReviewTopicsError>> {
204 let p_browse_node_id = browse_node_id;
206 let p_marketplace_id = marketplace_id;
207 let p_sort_by = sort_by;
208
209 let uri_str = format!("{}/customerFeedback/2024-06-01/browseNodes/{browseNodeId}/reviews/topics", configuration.base_path, browseNodeId=crate::apis::urlencode(p_browse_node_id));
210 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
211
212 req_builder = req_builder.query(&[("marketplaceId", &p_marketplace_id.to_string())]);
213 req_builder = req_builder.query(&[("sortBy", &p_sort_by.to_string())]);
214 if let Some(ref user_agent) = configuration.user_agent {
215 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
216 }
217
218 let req = req_builder.build()?;
219 let resp = configuration.client.execute(req).await?;
220
221 let status = resp.status();
222 let content_type = resp
223 .headers()
224 .get("content-type")
225 .and_then(|v| v.to_str().ok())
226 .unwrap_or("application/octet-stream");
227 let content_type = super::ContentType::from(content_type);
228
229 if !status.is_client_error() && !status.is_server_error() {
230 let content = resp.text().await?;
231 match content_type {
232 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
233 ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::customer_feedback_2024_06_01::BrowseNodeReviewTopicsResponse`"))),
234 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::customer_feedback_2024_06_01::BrowseNodeReviewTopicsResponse`")))),
235 }
236 } else {
237 let content = resp.text().await?;
238 let entity: Option<GetBrowseNodeReviewTopicsError> = serde_json::from_str(&content).ok();
239 Err(Error::ResponseError(ResponseContent { status, content, entity }))
240 }
241}
242
243pub async fn get_browse_node_review_trends(configuration: &configuration::Configuration, browse_node_id: &str, marketplace_id: &str) -> Result<models::customer_feedback_2024_06_01::BrowseNodeReviewTrendsResponse, Error<GetBrowseNodeReviewTrendsError>> {
245 let p_browse_node_id = browse_node_id;
247 let p_marketplace_id = marketplace_id;
248
249 let uri_str = format!("{}/customerFeedback/2024-06-01/browseNodes/{browseNodeId}/reviews/trends", configuration.base_path, browseNodeId=crate::apis::urlencode(p_browse_node_id));
250 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
251
252 req_builder = req_builder.query(&[("marketplaceId", &p_marketplace_id.to_string())]);
253 if let Some(ref user_agent) = configuration.user_agent {
254 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
255 }
256
257 let req = req_builder.build()?;
258 let resp = configuration.client.execute(req).await?;
259
260 let status = resp.status();
261 let content_type = resp
262 .headers()
263 .get("content-type")
264 .and_then(|v| v.to_str().ok())
265 .unwrap_or("application/octet-stream");
266 let content_type = super::ContentType::from(content_type);
267
268 if !status.is_client_error() && !status.is_server_error() {
269 let content = resp.text().await?;
270 match content_type {
271 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
272 ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::customer_feedback_2024_06_01::BrowseNodeReviewTrendsResponse`"))),
273 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::customer_feedback_2024_06_01::BrowseNodeReviewTrendsResponse`")))),
274 }
275 } else {
276 let content = resp.text().await?;
277 let entity: Option<GetBrowseNodeReviewTrendsError> = serde_json::from_str(&content).ok();
278 Err(Error::ResponseError(ResponseContent { status, content, entity }))
279 }
280}
281
282pub async fn get_item_browse_node(configuration: &configuration::Configuration, asin: &str, marketplace_id: &str) -> Result<models::customer_feedback_2024_06_01::BrowseNodeResponse, Error<GetItemBrowseNodeError>> {
284 let p_asin = asin;
286 let p_marketplace_id = marketplace_id;
287
288 let uri_str = format!("{}/customerFeedback/2024-06-01/items/{asin}/browseNode", configuration.base_path, asin=crate::apis::urlencode(p_asin));
289 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
290
291 req_builder = req_builder.query(&[("marketplaceId", &p_marketplace_id.to_string())]);
292 if let Some(ref user_agent) = configuration.user_agent {
293 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
294 }
295
296 let req = req_builder.build()?;
297 let resp = configuration.client.execute(req).await?;
298
299 let status = resp.status();
300 let content_type = resp
301 .headers()
302 .get("content-type")
303 .and_then(|v| v.to_str().ok())
304 .unwrap_or("application/octet-stream");
305 let content_type = super::ContentType::from(content_type);
306
307 if !status.is_client_error() && !status.is_server_error() {
308 let content = resp.text().await?;
309 match content_type {
310 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
311 ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::customer_feedback_2024_06_01::BrowseNodeResponse`"))),
312 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::customer_feedback_2024_06_01::BrowseNodeResponse`")))),
313 }
314 } else {
315 let content = resp.text().await?;
316 let entity: Option<GetItemBrowseNodeError> = serde_json::from_str(&content).ok();
317 Err(Error::ResponseError(ResponseContent { status, content, entity }))
318 }
319}
320
321pub async fn get_item_review_topics(configuration: &configuration::Configuration, asin: &str, marketplace_id: &str, sort_by: &str) -> Result<models::customer_feedback_2024_06_01::ItemReviewTopicsResponse, Error<GetItemReviewTopicsError>> {
323 let p_asin = asin;
325 let p_marketplace_id = marketplace_id;
326 let p_sort_by = sort_by;
327
328 let uri_str = format!("{}/customerFeedback/2024-06-01/items/{asin}/reviews/topics", configuration.base_path, asin=crate::apis::urlencode(p_asin));
329 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
330
331 req_builder = req_builder.query(&[("marketplaceId", &p_marketplace_id.to_string())]);
332 req_builder = req_builder.query(&[("sortBy", &p_sort_by.to_string())]);
333 if let Some(ref user_agent) = configuration.user_agent {
334 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
335 }
336
337 let req = req_builder.build()?;
338 let resp = configuration.client.execute(req).await?;
339
340 let status = resp.status();
341 let content_type = resp
342 .headers()
343 .get("content-type")
344 .and_then(|v| v.to_str().ok())
345 .unwrap_or("application/octet-stream");
346 let content_type = super::ContentType::from(content_type);
347
348 if !status.is_client_error() && !status.is_server_error() {
349 let content = resp.text().await?;
350 match content_type {
351 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
352 ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::customer_feedback_2024_06_01::ItemReviewTopicsResponse`"))),
353 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::customer_feedback_2024_06_01::ItemReviewTopicsResponse`")))),
354 }
355 } else {
356 let content = resp.text().await?;
357 let entity: Option<GetItemReviewTopicsError> = serde_json::from_str(&content).ok();
358 Err(Error::ResponseError(ResponseContent { status, content, entity }))
359 }
360}
361
362pub async fn get_item_review_trends(configuration: &configuration::Configuration, asin: &str, marketplace_id: &str) -> Result<models::customer_feedback_2024_06_01::ItemReviewTrendsResponse, Error<GetItemReviewTrendsError>> {
364 let p_asin = asin;
366 let p_marketplace_id = marketplace_id;
367
368 let uri_str = format!("{}/customerFeedback/2024-06-01/items/{asin}/reviews/trends", configuration.base_path, asin=crate::apis::urlencode(p_asin));
369 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
370
371 req_builder = req_builder.query(&[("marketplaceId", &p_marketplace_id.to_string())]);
372 if let Some(ref user_agent) = configuration.user_agent {
373 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
374 }
375
376 let req = req_builder.build()?;
377 let resp = configuration.client.execute(req).await?;
378
379 let status = resp.status();
380 let content_type = resp
381 .headers()
382 .get("content-type")
383 .and_then(|v| v.to_str().ok())
384 .unwrap_or("application/octet-stream");
385 let content_type = super::ContentType::from(content_type);
386
387 if !status.is_client_error() && !status.is_server_error() {
388 let content = resp.text().await?;
389 match content_type {
390 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
391 ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::customer_feedback_2024_06_01::ItemReviewTrendsResponse`"))),
392 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::customer_feedback_2024_06_01::ItemReviewTrendsResponse`")))),
393 }
394 } else {
395 let content = resp.text().await?;
396 let entity: Option<GetItemReviewTrendsError> = serde_json::from_str(&content).ok();
397 Err(Error::ResponseError(ResponseContent { status, content, entity }))
398 }
399}
400