use super::*;
use crate::protocols::http::compression::ResponseCompressionCtx;
pub struct ResponseCompression(ResponseCompressionCtx);
impl HttpModule for ResponseCompression {
fn as_any(&self) -> &dyn std::any::Any {
self
}
fn as_any_mut(&mut self) -> &mut dyn std::any::Any {
self
}
fn request_header_filter(&mut self, req: &mut RequestHeader) -> Result<()> {
self.0.request_filter(req);
Ok(())
}
fn response_filter(&mut self, t: &mut HttpTask) -> Result<()> {
self.0.response_filter(t);
Ok(())
}
}
pub struct ResponseCompressionBuilder {
level: u32,
}
impl ResponseCompressionBuilder {
pub fn enable(level: u32) -> ModuleBuilder {
Box::new(ResponseCompressionBuilder { level })
}
}
impl HttpModuleBuilder for ResponseCompressionBuilder {
fn init(&self) -> Module {
Box::new(ResponseCompression(ResponseCompressionCtx::new(
self.level, false,
)))
}
fn order(&self) -> i16 {
i16::MIN / 2
}
}