summaryrefslogtreecommitdiff
path: root/src/method.rs
diff options
context:
space:
mode:
authorTyler Murphy <tylerm@tylerm.dev>2023-07-05 21:34:20 -0400
committerTyler Murphy <tylerm@tylerm.dev>2023-07-05 21:34:20 -0400
commit168b8937eb0fe88311fe474ab9569691a19d087f (patch)
tree3e70d7de89adc9e62987cea9341ba2cc10d6cf25 /src/method.rs
downloadhttp-168b8937eb0fe88311fe474ab9569691a19d087f.tar.gz
http-168b8937eb0fe88311fe474ab9569691a19d087f.tar.bz2
http-168b8937eb0fe88311fe474ab9569691a19d087f.zip
changes
Diffstat (limited to 'src/method.rs')
-rw-r--r--src/method.rs65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/method.rs b/src/method.rs
new file mode 100644
index 0000000..004ce8d
--- /dev/null
+++ b/src/method.rs
@@ -0,0 +1,65 @@
+use crate::parse::Parse;
+
+pub enum Method {
+ Get,
+ Head,
+ Post,
+ Put,
+ Delete,
+ Connect,
+ Options,
+ Trace,
+ Patch,
+ Brew,
+ PropFind,
+ When,
+ Unkown(String)
+}
+
+impl Method {
+ pub fn as_str(&self) -> &str {
+ match self {
+ Self::Get => "GET",
+ Self::Head => "HEAD",
+ Self::Post => "POST",
+ Self::Put => "PUT",
+ Self::Delete => "DELETE",
+ Self::Connect => "CONNECT",
+ Self::Options => "OPTIONS",
+ Self::Trace => "TRACE",
+ Self::Patch => "PATCH",
+ Self::Brew => "BREW",
+ Self::PropFind => "PROPFIND",
+ Self::When => "WHEN",
+ Self::Unkown(ref s) => s
+ }
+ }
+}
+
+impl Parse for Method {
+ fn parse(s: impl Into<String>) -> Self {
+ let str: String = s.into();
+ match str.as_str() {
+ "GET" => Self::Get,
+ "HEAD" => Self::Head,
+ "POST" => Self::Post,
+ "PUT" => Self::Put,
+ "DELETE" => Self::Delete,
+ "CONNECT" => Self::Connect,
+ "OPTIONS" => Self::Options,
+ "TRACE" => Self::Trace,
+ "PATCH" => Self::Patch,
+ "BREW" => Self::Brew,
+ "PROPFIND" => Self::PropFind,
+ "WHEN" => Self::When,
+ _ => Self::Unkown(str)
+ }
+ }
+}
+
+impl ToString for Method {
+ fn to_string(&self) -> String {
+ self.as_str().to_string()
+ }
+}
+