support url with authority (#736)

This commit is contained in:
Sean McArthur
2019-12-11 13:42:45 -08:00
committed by GitHub
parent 7631c0390e
commit be52c4d558
2 changed files with 85 additions and 2 deletions

View File

@@ -122,7 +122,19 @@ impl Request {
impl RequestBuilder {
pub(crate) fn new(client: Client, request: crate::Result<Request>) -> RequestBuilder {
RequestBuilder { client, request }
let mut builder = RequestBuilder { client, request };
let auth = builder
.request
.as_mut()
.ok()
.and_then(|req| async_impl::request::extract_authority(req.url_mut()));
if let Some((username, password)) = auth {
builder.basic_auth(username, password)
} else {
builder
}
}
/// Add a `Header` to this Request.
@@ -872,4 +884,18 @@ mod tests {
assert_eq!(req.url().query(), None);
assert_eq!(req.url().as_str(), "https://google.com/");
}
#[test]
fn convert_url_authority_into_basic_auth() {
let client = Client::new();
let some_url = "https://Aladdin:open sesame@localhost/";
let req = client
.get(some_url)
.build()
.expect("request build");
assert_eq!(req.url().as_str(), "https://localhost/");
assert_eq!(req.headers()["authorization"], "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==");
}
}