amazon_spapi/apis/
configuration.rs

1use reqwest::{Client, Request, Response, Error};
2use std::{cell::RefCell, ops::Deref};
3
4use crate::client::{RateLimitGuard, SpapiClient};
5
6#[derive(Debug, Clone)]
7pub struct CustomClient {
8    inner: Client,
9}
10
11impl CustomClient {
12    pub fn new(client: Client) -> Self {
13        Self { inner: client }
14    }
15
16    pub async fn execute(&self, request: Request) -> Result<Response, Error> {
17        log::debug!("Executing request to: {}", request.url());
18        log::debug!("Executing request method: {}", request.method());
19        log::debug!("Executing request headers: {:?}", request.headers());
20        log::debug!("Executing request body: {:?}", request.body());
21
22        let result = self.inner.execute(request).await;
23      
24        log::debug!("Response status: {:?}", result.as_ref().map(|r| r.status()));
25        log::debug!("Response headers: {:?}", result.as_ref().map(|r| r.headers()));
26
27        result
28    }
29}
30
31impl Deref for CustomClient {
32    type Target = Client;
33
34    fn deref(&self) -> &Self::Target {
35        &self.inner
36    }
37}
38
39#[derive(Debug, Clone)]
40pub struct Configuration {
41    pub base_path: String,
42    pub user_agent: Option<String>,
43    pub client: CustomClient,
44}