refactor(uri): make ByteStr an implementation detail of uri
This commit is contained in:
3
src/common/mod.rs
Normal file
3
src/common/mod.rs
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
pub use self::str::ByteStr;
|
||||||
|
|
||||||
|
mod str;
|
||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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)]
|
||||||
|
|||||||
@@ -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};
|
||||||
|
|||||||
@@ -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> {
|
||||||
|
|||||||
Reference in New Issue
Block a user