#![allow(unused_variables)]
use async_trait::async_trait;
use bytes::Bytes;
use crate::{request::DeboaRequest, response::DeboaResponse, Result};
#[async_trait::async_trait]
pub trait Compressor: Send + Sync + 'static {
fn name(&self) -> String;
async fn compress_body(&self, request: &DeboaRequest) -> Result<Bytes>;
}
#[async_trait]
impl<T: Compressor> Compressor for Box<T> {
fn name(&self) -> String {
self.as_ref().name()
}
async fn compress_body(&self, request: &DeboaRequest) -> Result<Bytes> {
self.as_ref().compress_body(request).await
}
}
#[async_trait]
pub trait Decompressor: Send + Sync + 'static {
fn name(&self) -> String;
async fn decompress_body(&self, response: &mut DeboaResponse) -> Result<()> {
Ok(())
}
}
#[async_trait]
impl<T: Decompressor> Decompressor for Box<T> {
fn name(&self) -> String {
self.as_ref().name()
}
async fn decompress_body(&self, response: &mut DeboaResponse) -> Result<()> {
self.as_ref().decompress_body(response).await
}
}