#[cfg(any(feature = "method", feature = "method_std"))]
use serde::{Deserialize, Serialize};
#[cfg(any(feature = "method", feature = "method_std"))]
pub use product_os_http::method::Method as HttpMethod;
#[cfg(any(feature = "method", feature = "method_std"))]
#[derive(Clone, Serialize, Deserialize, Debug, PartialEq, Eq, PartialOrd, Ord)]
pub enum Method {
GET,
POST,
PATCH,
PUT,
DELETE,
TRACE,
HEAD,
OPTIONS,
CONNECT,
ANY,
}
#[cfg(any(feature = "method", feature = "method_std"))]
impl Method {
pub fn to_http_method(&self) -> product_os_http::method::Method {
match self {
Method::GET => product_os_http::method::Method::GET,
Method::POST => product_os_http::method::Method::POST,
Method::PATCH => product_os_http::method::Method::PATCH,
Method::PUT => product_os_http::method::Method::PUT,
Method::DELETE => product_os_http::method::Method::DELETE,
Method::TRACE => product_os_http::method::Method::TRACE,
Method::HEAD => product_os_http::method::Method::HEAD,
Method::OPTIONS => product_os_http::method::Method::OPTIONS,
Method::CONNECT => product_os_http::method::Method::CONNECT,
Method::ANY => product_os_http::method::Method::GET,
}
}
#[allow(clippy::match_ref_pats)]
pub fn from_http_method(method: &product_os_http::Method) -> Self {
match method {
&product_os_http::method::Method::GET => Method::GET,
&product_os_http::method::Method::POST => Method::POST,
&product_os_http::method::Method::PATCH => Method::PATCH,
&product_os_http::method::Method::PUT => Method::PUT,
&product_os_http::method::Method::DELETE => Method::DELETE,
&product_os_http::method::Method::TRACE => Method::TRACE,
&product_os_http::method::Method::HEAD => Method::HEAD,
&product_os_http::method::Method::OPTIONS => Method::OPTIONS,
&product_os_http::method::Method::CONNECT => Method::CONNECT,
_ => Method::ANY,
}
}
#[allow(clippy::should_implement_trait)]
pub fn from_str(method: &str) -> Self {
match method {
"GET" => Method::GET,
"POST" => Method::POST,
"PATCH" => Method::PATCH,
"PUT" => Method::PUT,
"DELETE" => Method::DELETE,
"TRACE" => Method::TRACE,
"HEAD" => Method::HEAD,
"OPTIONS" => Method::OPTIONS,
"CONNECT" => Method::CONNECT,
_ => Method::ANY,
}
}
}