use ureq::{Error as UreqError, Request, Response};
use url::Url;
use crate::{
common::{error::Error, traits::client_trait_sync::ClientTraitSync},
error::payload::Payload,
};
#[derive(Debug)]
pub struct UreqErrorSync {
pub url: Url,
pub request: Request,
pub(crate) payload: Payload,
}
impl ClientTraitSync for UreqErrorSync {
type Response = Response;
type Error = Error;
fn send(&mut self) -> Result<Self::Response, Self::Error> {
match self.request.clone().send_json(self.payload.clone()) {
Ok(response) => Ok(response),
Err(err) => match err {
UreqError::Status(_, response) => Ok(response),
UreqError::Transport(_) => Err(err.into()),
},
}
}
}