#![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>>;
async fn on_response(&self, response: &mut DeboaResponse) -> Result<()>;
}
#[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
}
}