#![allow(unused_variables)]
use async_trait::async_trait;
use mockall::automock;
use crate::{request::DeboaRequest, response::DeboaResponse, Result};
#[automock]
#[async_trait]
pub trait DeboaCatcher: Send + Sync + 'static {
async fn on_request(&self, request: &mut DeboaRequest) -> Result<Option<DeboaResponse>> {
todo!("Not implemented")
}
async fn on_response(&self, response: &mut DeboaResponse) -> Result<()> {
todo!("Not implemented")
}
}
#[async_trait]
impl<T: DeboaCatcher> DeboaCatcher for Box<T> {
async fn on_request(&self, request: &mut DeboaRequest) -> Result<Option<DeboaResponse>> {
self.as_ref().on_request(request).await
}
async fn on_response(&self, response: &mut DeboaResponse) -> Result<()> {
self.as_ref().on_response(response).await
}
}