Switch to string crate (#6)
This commit is contained in:
		| @@ -1,13 +1,13 @@ | ||||
| use super::StreamId; | ||||
| use hpack; | ||||
| use frame::{self, Frame, Head, Kind, Error}; | ||||
| use util::byte_str::ByteStr; | ||||
|  | ||||
| use http::{request, response, version, uri, Method, StatusCode}; | ||||
| use http::{request, response, version, uri, Method, StatusCode, Uri}; | ||||
| use http::header::{self, HeaderMap, HeaderName, HeaderValue}; | ||||
|  | ||||
| use bytes::{BytesMut, Bytes}; | ||||
| use byteorder::{BigEndian, ByteOrder}; | ||||
| use string::String; | ||||
|  | ||||
| use std::io::Cursor; | ||||
|  | ||||
| @@ -84,9 +84,9 @@ pub struct StreamDependency { | ||||
| pub struct Pseudo { | ||||
|     // Request | ||||
|     method: Option<Method>, | ||||
|     scheme: Option<ByteStr>, | ||||
|     authority: Option<ByteStr>, | ||||
|     path: Option<ByteStr>, | ||||
|     scheme: Option<String<Bytes>>, | ||||
|     authority: Option<String<Bytes>>, | ||||
|     path: Option<String<Bytes>>, | ||||
|  | ||||
|     // Response | ||||
|     status: Option<StatusCode>, | ||||
| @@ -225,17 +225,17 @@ impl Headers { | ||||
|  | ||||
|         if let Some(scheme) = self.pseudo.scheme { | ||||
|             // TODO: Don't unwrap | ||||
|             parts.scheme = Some(uri::Scheme::try_from_shared(scheme.into()).unwrap()); | ||||
|             parts.scheme = Some(uri::Scheme::try_from_shared(scheme.into_inner()).unwrap()); | ||||
|         } | ||||
|  | ||||
|         if let Some(authority) = self.pseudo.authority { | ||||
|             // TODO: Don't unwrap | ||||
|             parts.authority = Some(uri::Authority::try_from_shared(authority.into()).unwrap()); | ||||
|             parts.authority = Some(uri::Authority::try_from_shared(authority.into_inner()).unwrap()); | ||||
|         } | ||||
|  | ||||
|         if let Some(path) = self.pseudo.path { | ||||
|             // TODO: Don't unwrap | ||||
|             parts.origin_form = Some(uri::OriginForm::try_from_shared(path.into()).unwrap()); | ||||
|             parts.origin_form = Some(uri::OriginForm::try_from_shared(path.into_inner()).unwrap()); | ||||
|         } | ||||
|  | ||||
|         request.uri = parts.into(); | ||||
| @@ -297,14 +297,39 @@ impl From<Headers> for Frame { | ||||
| // ===== impl Pseudo ===== | ||||
|  | ||||
| impl Pseudo { | ||||
|     pub fn request(method: Method, path: ByteStr) -> Self { | ||||
|         Pseudo { | ||||
|     pub fn request(method: Method, uri: Uri) -> Self { | ||||
|         let parts = uri::Parts::from(uri); | ||||
|  | ||||
|         fn to_string(src: Bytes) -> String<Bytes> { | ||||
|             unsafe { String::from_utf8_unchecked(src) } | ||||
|         } | ||||
|  | ||||
|         let path = parts.origin_form | ||||
|             .map(|v| v.into()) | ||||
|             .unwrap_or_else(|| Bytes::from_static(b"/")); | ||||
|  | ||||
|         let mut pseudo = Pseudo { | ||||
|             method: Some(method), | ||||
|             scheme: None, | ||||
|             authority: None, | ||||
|             path: Some(path), | ||||
|             path: Some(to_string(path)), | ||||
|             status: None, | ||||
|         }; | ||||
|  | ||||
|         // If the URI includes a scheme component, add it to the pseudo headers | ||||
|         // | ||||
|         // TODO: Scheme must be set... | ||||
|         if let Some(scheme) = parts.scheme { | ||||
|             pseudo.set_scheme(to_string(scheme.into())); | ||||
|         } | ||||
|  | ||||
|         // If the URI includes an authority component, add it to the pseudo | ||||
|         // headers | ||||
|         if let Some(authority) = parts.authority { | ||||
|             pseudo.set_authority(to_string(authority.into())); | ||||
|         } | ||||
|  | ||||
|         pseudo | ||||
|     } | ||||
|  | ||||
|     pub fn response(status: StatusCode) -> Self { | ||||
| @@ -317,11 +342,11 @@ impl Pseudo { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     pub fn set_scheme(&mut self, scheme: ByteStr) { | ||||
|     pub fn set_scheme(&mut self, scheme: String<Bytes>) { | ||||
|         self.scheme = Some(scheme); | ||||
|     } | ||||
|  | ||||
|     pub fn set_authority(&mut self, authority: ByteStr) { | ||||
|     pub fn set_authority(&mut self, authority: String<Bytes>) { | ||||
|         self.authority = Some(authority); | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user