From a25f62f4cb9e5cf839306141374133a272d9d8f7 Mon Sep 17 00:00:00 2001 From: Douman Date: Fri, 27 Jul 2018 22:39:09 +0300 Subject: [PATCH] Use base64 to fully encode basic auth creds Change basic_auth to use less allocations --- src/async_impl/request.rs | 12 +++++++----- src/request.rs | 12 +++++++----- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/async_impl/request.rs b/src/async_impl/request.rs index cfbaa4e..aeb56b8 100644 --- a/src/async_impl/request.rs +++ b/src/async_impl/request.rs @@ -123,12 +123,14 @@ impl RequestBuilder { /// Enable HTTP basic authentication. pub fn basic_auth(&mut self, username: U, password: Option

) -> &mut RequestBuilder where - U: Into, - P: Into, + U: fmt::Display, + P: fmt::Display, { - let username = username.into(); - let password = password.map(|p| p.into()).unwrap_or(String::new()); - let header_value = format!("basic {}:{}", username, encode(&password)); + let auth = match password { + Some(password) => format!("{}:{}", username, password), + None => format!("{}:", username) + }; + let header_value = format!("basic {}", encode(&auth)); self.header(::header::AUTHORIZATION, HeaderValue::from_str(header_value.as_str()).expect("")) } diff --git a/src/request.rs b/src/request.rs index d7bac6c..8c04898 100644 --- a/src/request.rs +++ b/src/request.rs @@ -162,12 +162,14 @@ impl RequestBuilder { /// ``` pub fn basic_auth(&mut self, username: U, password: Option

) -> &mut RequestBuilder where - U: Into, - P: Into, + U: fmt::Display, + P: fmt::Display, { - let username = username.into(); - let password = password.map(|p| p.into()).unwrap_or(String::new()); - let header_value = format!("basic {}:{}", username, encode(&password)); + let auth = match password { + Some(password) => format!("{}:{}", username, password), + None => format!("{}:", username) + }; + let header_value = format!("basic {}", encode(&auth)); self.header(::header::AUTHORIZATION, HeaderValue::from_str(header_value.as_str()).expect("")) }