feat(uri): redesign RequestUri type into Uri
Closes #1000 BREAKING CHANGE: The name of `RequestUri` has changed to `Uri`. It is no longer an `enum`, but an opaque struct with getter methods.
This commit is contained in:
committed by
Sean McArthur
parent
1868f8548d
commit
9036443e6b
@@ -23,7 +23,6 @@ use header::{Headers, Host};
|
||||
use http::{self, TokioBody};
|
||||
use method::Method;
|
||||
use self::pool::{Pool, Pooled};
|
||||
use uri::RequestUri;
|
||||
use {Url};
|
||||
|
||||
pub use self::connect::{HttpConnector, Connect};
|
||||
@@ -120,15 +119,10 @@ impl<C: Connect> Service for Client<C> {
|
||||
|
||||
fn call(&self, req: Request) -> Self::Future {
|
||||
let url = req.url().clone();
|
||||
|
||||
let (mut head, body) = request::split(req);
|
||||
let mut headers = Headers::new();
|
||||
headers.set(Host::new(url.host_str().unwrap().to_owned(), url.port()));
|
||||
headers.extend(head.headers.iter());
|
||||
head.subject.1 = RequestUri::AbsolutePath {
|
||||
path: url.path().to_owned(),
|
||||
query: url.query().map(ToOwned::to_owned),
|
||||
};
|
||||
head.headers = headers;
|
||||
|
||||
let checkout = self.pool.checkout(&url[..::url::Position::BeforePath]);
|
||||
|
||||
@@ -5,7 +5,7 @@ use Url;
|
||||
use header::Headers;
|
||||
use http::{Body, RequestHead};
|
||||
use method::Method;
|
||||
use uri::RequestUri;
|
||||
use uri::Uri;
|
||||
use version::HttpVersion;
|
||||
|
||||
/// A client request to a remote server.
|
||||
@@ -79,8 +79,9 @@ impl fmt::Debug for Request {
|
||||
}
|
||||
|
||||
pub fn split(req: Request) -> (RequestHead, Option<Body>) {
|
||||
let uri = Uri::new(&req.url[::url::Position::BeforePath..::url::Position::AfterQuery]).expect("url is uri");
|
||||
let head = RequestHead {
|
||||
subject: ::http::RequestLine(req.method, RequestUri::AbsoluteUri(req.url)),
|
||||
subject: ::http::RequestLine(req.method, uri),
|
||||
headers: req.headers,
|
||||
version: req.version,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user