diff options
Diffstat (limited to 'src/version.rs')
-rw-r--r-- | src/version.rs | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/version.rs b/src/version.rs new file mode 100644 index 0000000..6b6d5fb --- /dev/null +++ b/src/version.rs @@ -0,0 +1,34 @@ +use crate::parse::Parse; + +pub enum Version { + HTTP11, + HTTP2, + Unknown(String) +} + +impl Version { + pub fn as_str(&self) -> &str { + match self { + Self::HTTP11 => "HTTP/1.1", + Self::HTTP2 => "HTTP/2", + Self::Unknown(ref s) => s, + } + } +} + +impl Parse for Version { + fn parse(s: impl Into<String>) -> Self { + let s = s.into(); + match s.as_str() { + "HTTP/1.1" => Self::HTTP11, + "HTTP/2" => Self::HTTP2, + _ => Self::Unknown(s) + } + } +} + +impl ToString for Version { + fn to_string(&self) -> String { + self.as_str().to_string() + } +} |