use std::{fmt::Display, str::FromStr};
use crate::{err, HttpError, Result};
#[derive(Debug, Eq, Hash, PartialEq, Clone, Copy)]
pub enum HttpMethod {
GET,
POST,
PUT,
DELETE,
HEAD,
PATCH,
CONNECT,
OPTIONS,
TRACE,
}
impl FromStr for HttpMethod {
type Err = HttpError;
fn from_str(t: &str) -> Result<Self> {
match t {
"GET" => Ok(Self::GET),
"POST" => Ok(Self::POST),
"PUT" => Ok(Self::PUT),
"DELETE" => Ok(Self::DELETE),
"HEAD" => Ok(Self::HEAD),
"PATCH" => Ok(Self::PATCH),
"CONNECT" => Ok(Self::CONNECT),
"OPTIONS" => Ok(Self::OPTIONS),
"TRACE" => Ok(Self::TRACE),
_ => err!("Couldn't parse request method \"{t}\""),
}
}
}
impl Display for HttpMethod {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{self:?}")
}
}