use crate::*;
impl Default for Method {
fn default() -> Self {
Self::UNKNOWN(String::new())
}
}
impl Display for Method {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let res: &str = match self {
Self::GET => GET,
Self::POST => POST,
Self::CONNECT => CONNECT,
Self::DELETE => DELETE,
Self::HEAD => HEAD,
Self::PATCH => PATCH,
Self::TRACE => TRACE,
Self::PUT => PUT,
Self::OPTIONS => OPTIONS,
Self::UNKNOWN(methods) => methods,
};
write!(f, "{}", res)
}
}
impl FromStr for Method {
type Err = ();
fn from_str(methods_str: &str) -> Result<Self, Self::Err> {
match methods_str {
GET => Ok(Self::GET),
POST => Ok(Self::POST),
PUT => Ok(Self::PUT),
DELETE => Ok(Self::DELETE),
PATCH => Ok(Self::PATCH),
HEAD => Ok(Self::HEAD),
OPTIONS => Ok(Self::OPTIONS),
CONNECT => Ok(Self::CONNECT),
TRACE => Ok(Self::TRACE),
_ => Ok(Self::UNKNOWN(methods_str.to_string())),
}
}
}
impl Method {
pub fn new() -> Self {
Self::default()
}
pub fn is_get(&self) -> bool {
matches!(self, Self::GET)
}
pub fn is_post(&self) -> bool {
matches!(self, Self::POST)
}
pub fn is_put(&self) -> bool {
matches!(self, Self::PUT)
}
pub fn is_delete(&self) -> bool {
matches!(self, Self::DELETE)
}
pub fn is_patch(&self) -> bool {
matches!(self, Self::PATCH)
}
pub fn is_head(&self) -> bool {
matches!(self, Self::HEAD)
}
pub fn is_options(&self) -> bool {
matches!(self, Self::OPTIONS)
}
pub fn is_connect(&self) -> bool {
matches!(self, Self::CONNECT)
}
pub fn is_trace(&self) -> bool {
matches!(self, Self::TRACE)
}
pub fn is_unknown(&self) -> bool {
matches!(self, Self::UNKNOWN(_))
}
}