use std::sync::Arc;
use ureq::Body;
use ureq::http::Response;
use crate::Parser;
#[derive(Debug)]
pub struct UreqResponseInner {
pub data: Response<Body>,
pub max_body_size: u64,
}
#[derive(Debug)]
pub struct UreqResponse<P> {
pub inner: UreqResponseInner,
pub parser: Arc<P>,
}
impl<P> UreqResponse<P> {
pub fn new(data: Response<Body>, max_body_size: u64, parser: Arc<P>) -> Self {
Self {
inner: UreqResponseInner {
data,
max_body_size,
},
parser,
}
}
pub fn parse(
self,
) -> Result<<P as Parser<UreqResponseInner>>::Output, <P as Parser<UreqResponseInner>>::Error>
where
P: Parser<UreqResponseInner>,
{
self.parser.clone().parse(self.inner)
}
}