#![allow(clippy::too_many_arguments)]
wit_bindgen::generate!({
path: "wit",
world: "filter",
});
use crate::plecto::filter::host_log;
struct MyFilter;
impl Guest for MyFilter {
fn init() {
}
fn on_request(req: HttpRequest) -> RequestDecision {
host_log::log(host_log::Level::Info, "my-filter: on-request");
if req
.headers
.iter()
.any(|h| h.name.eq_ignore_ascii_case("x-block"))
{
return RequestDecision::ShortCircuit(HttpResponse {
status: 403,
headers: vec![],
body: b"blocked by my-filter".to_vec(),
});
}
RequestDecision::Continue
}
fn on_response(_req: HttpRequest, _resp: HttpResponse) -> ResponseDecision {
ResponseDecision::Continue
}
}
export!(MyFilter);