refactor(uri): make ByteStr an implementation detail of uri

This commit is contained in:
Yazad Daruvala
2017-06-23 21:52:56 -07:00
parent 579d360f51
commit 3021cd9dd8
6 changed files with 11 additions and 22 deletions

3
src/common/mod.rs Normal file
View File

@@ -0,0 +1,3 @@
pub use self::str::ByteStr;
mod str;

View File

@@ -5,7 +5,7 @@ use httparse;
use bytes::{BytesMut, Bytes}; use bytes::{BytesMut, Bytes};
use header::{self, Headers, ContentLength, TransferEncoding}; use header::{self, Headers, ContentLength, TransferEncoding};
use http::{ByteStr, MessageHead, RawStatus, Http1Transaction, ParseResult, ServerTransaction, ClientTransaction, RequestLine}; use http::{MessageHead, RawStatus, Http1Transaction, ParseResult, ServerTransaction, ClientTransaction, RequestLine};
use http::h1::{Encoder, Decoder, date}; use http::h1::{Encoder, Decoder, date};
use method::Method; use method::Method;
use status::StatusCode; use status::StatusCode;
@@ -54,10 +54,10 @@ impl Http1Transaction for ServerTransaction {
let slice = buf.split_to(len).freeze(); let slice = buf.split_to(len).freeze();
let path = slice.slice(path.0, path.1); let path = slice.slice(path.0, path.1);
// path was found to be utf8 by httparse // path was found to be utf8 by httparse
let path = unsafe { ByteStr::from_utf8_unchecked(path) }; let path = try!(unsafe { ::uri::from_utf8_unchecked(path) });
let subject = RequestLine( let subject = RequestLine(
method, method,
try!(::uri::from_byte_str(path)), path,
); );
headers.extend(HeadersAsBytesIter { headers.extend(HeadersAsBytesIter {

View File

@@ -15,7 +15,6 @@ use version::HttpVersion::{Http10, Http11};
pub use self::conn::{Conn, KeepAlive, KA}; pub use self::conn::{Conn, KeepAlive, KA};
pub use self::body::{Body, TokioBody}; pub use self::body::{Body, TokioBody};
pub use self::chunk::Chunk; pub use self::chunk::Chunk;
pub use self::str::ByteStr;
mod body; mod body;
mod chunk; mod chunk;
@@ -23,23 +22,9 @@ mod conn;
mod io; mod io;
mod h1; mod h1;
//mod h2; //mod h2;
mod str;
pub mod request; pub mod request;
pub mod response; pub mod response;
/*
macro_rules! nonblocking {
($e:expr) => ({
match $e {
Ok(n) => Ok(Some(n)),
Err(e) => match e.kind() {
stdio::ErrorKind::WouldBlock => Ok(None),
_ => Err(e)
}
}
});
}
*/
/// An Incoming Message head. Includes request/status line, and headers. /// An Incoming Message head. Includes request/status line, and headers.
#[derive(Clone, Debug, Default, PartialEq)] #[derive(Clone, Debug, Default, PartialEq)]

View File

@@ -37,6 +37,7 @@ extern crate unicase;
extern crate test; extern crate test;
mod common;
pub use uri::Uri; pub use uri::Uri;
pub use client::Client; pub use client::Client;
pub use error::{Result, Error}; pub use error::{Result, Error};

View File

@@ -2,8 +2,8 @@ use std::error::Error as StdError;
use std::fmt::{Display, self}; use std::fmt::{Display, self};
use std::str::{self, FromStr}; use std::str::{self, FromStr};
use http::ByteStr; use ::common::ByteStr;
use bytes::{BufMut, BytesMut}; use bytes::{BufMut, Bytes, BytesMut};
/// The Request-URI of a Request's StartLine. /// The Request-URI of a Request's StartLine.
/// ///
@@ -297,8 +297,8 @@ impl Display for Uri {
} }
} }
pub fn from_byte_str(s: ByteStr) -> Result<Uri, UriError> { pub unsafe fn from_utf8_unchecked(slice: Bytes) -> Result<Uri, UriError> {
Uri::new(s) Uri::new(ByteStr::from_utf8_unchecked(slice))
} }
pub fn scheme_and_authority(uri: &Uri) -> Option<Uri> { pub fn scheme_and_authority(uri: &Uri) -> Option<Uri> {