use crate::observable::{HttpRequestObservation, HttpResponseObservation};
use crate::output::{Browser, WebServer};
#[derive(Debug, Clone)]
pub struct HttpRequestMatch {
pub browser: Browser,
pub quality: f32,
}
#[derive(Debug, Clone)]
pub struct HttpResponseMatch {
pub web_server: WebServer,
pub quality: f32,
}
#[derive(Debug, Clone)]
pub struct UaOsMatch {
pub family: String,
pub flavor: Option<String>,
}
pub trait HttpMatcher: Send + Sync {
fn match_http_request(&self, obs: &HttpRequestObservation) -> Option<HttpRequestMatch>;
fn match_http_response(&self, obs: &HttpResponseObservation) -> Option<HttpResponseMatch>;
fn match_user_agent(&self, ua: &str) -> Option<UaOsMatch>;
}