use caramelo::{MatchType::ToHave, Matcher, TypedMatcher};
use crate::{matchers::HttpMatcher, mock::Request};
pub fn path(value: &str) -> HttpMatcher {
let regex = regex::Regex::new(value);
match regex {
Ok(regex) => HttpMatcher::Path(Path(regex)),
Err(_) => panic!("Invalid regex pattern"),
}
}
#[derive(Clone)]
pub struct Path(regex::Regex);
impl Matcher<Request> for Path {
fn matches(&self, value: &Request) -> bool {
self.0.is_match(
&value
.path()
.to_string(),
)
}
fn description(&self) -> String {
format!("path matching {:?}", self.0)
}
}
impl TypedMatcher<Request> for Path {
fn matcher_type(&self) -> caramelo::MatchType {
ToHave
}
}