Implemented a few things
This commit is contained in:
parent
b4df6e3f08
commit
1da0370764
@ -1,5 +1,6 @@
|
|||||||
pub use request::Request;
|
pub use request::Request;
|
||||||
pub use method::Method;
|
pub use method::Method;
|
||||||
|
pub use request::ParseError;
|
||||||
|
|
||||||
pub mod request;
|
pub mod request;
|
||||||
pub mod method;
|
pub mod method;
|
||||||
@ -1,7 +1,9 @@
|
|||||||
|
use std::str;
|
||||||
use super::method::Method;
|
use super::method::Method;
|
||||||
use std::convert::TryFrom;
|
use std::convert::TryFrom;
|
||||||
use std::io::Error;
|
use std::io::Error;
|
||||||
use std::fmt::{Display, Debug};
|
use std::fmt::{Display, Debug, Formatter};
|
||||||
|
use std::str::Utf8Error;
|
||||||
|
|
||||||
pub struct Request {
|
pub struct Request {
|
||||||
path: String,
|
path: String,
|
||||||
@ -14,17 +16,51 @@ impl Request {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl TryFrom<&[u8]> for Request {
|
impl TryFrom<&[u8]> for Request {
|
||||||
type Error = String;
|
type Error = ParseError;
|
||||||
|
|
||||||
|
//GET /search?name=abc&sort=1 HTTP/1.1
|
||||||
fn try_from(buffer: &[u8]) -> Result<Self, Self::Error> {
|
fn try_from(buffer: &[u8]) -> Result<Self, Self::Error> {
|
||||||
todo!()
|
match str::from_utf8(buffer){
|
||||||
|
Ok(request) => {}
|
||||||
|
Err(_) => return Err(ParseError::InvalidEncoding),
|
||||||
|
}
|
||||||
|
match str::from_utf8(buffer).or(Err(ParseError::InvalidEncoding)) {
|
||||||
|
Ok(request) => {}
|
||||||
|
Err(e) => return Err(e)
|
||||||
|
}
|
||||||
|
|
||||||
|
let request = str::from_utf8(buffer).or(Err(ParseError::InvalidEncoding))?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Display for ParseError {
|
||||||
|
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
|
||||||
|
write!(f, "{}", self.message())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Debug for ParseError {
|
||||||
|
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
|
||||||
|
write!(f, "{}", self.message())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub enum ParseError {
|
pub enum ParseError {
|
||||||
InvalidRequest,
|
InvalidRequest,
|
||||||
InvalidEncoding,
|
InvalidEncoding,
|
||||||
InvalidProtocol
|
InvalidProtocol,
|
||||||
|
InvalidMethod
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ParseError{
|
||||||
|
fn message(&self) -> &str{
|
||||||
|
match self {
|
||||||
|
ParseError::InvalidRequest => {"Invalid Request"}
|
||||||
|
ParseError::InvalidEncoding => {"Invalid Encoding"}
|
||||||
|
ParseError::InvalidProtocol => {"Invalid Protocol"}
|
||||||
|
ParseError::InvalidMethod => {"Invalid Method"}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Error for ParseError {
|
impl Error for ParseError {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user