use actix_web::{
HttpResponse,
http::{StatusCode, header::HeaderName},
};
pub trait Next {
fn next(&self, res: &HttpResponse) -> bool;
}
pub struct IsStatus(pub StatusCode);
impl IsStatus {
pub fn new(status: StatusCode) -> Self {
Self(status)
}
}
impl From<StatusCode> for IsStatus {
#[inline]
fn from(value: StatusCode) -> Self {
Self::new(value)
}
}
impl Next for IsStatus {
#[inline]
fn next(&self, res: &HttpResponse) -> bool {
res.status() == self.0
}
}
pub struct HasHeader(pub HeaderName);
impl HasHeader {
pub fn new(name: HeaderName) -> Self {
Self(name)
}
}
impl From<HeaderName> for HasHeader {
#[inline]
fn from(value: HeaderName) -> Self {
Self::new(value)
}
}
impl Next for HasHeader {
#[inline]
fn next(&self, res: &HttpResponse) -> bool {
res.headers().contains_key(&self.0)
}
}