Reimplemented RequestBuilder::basic_auth to use Base64Encoder (#713)
This commit is contained in:
committed by
Sean McArthur
parent
960e33cd48
commit
3a24cc1d4b
@@ -1,7 +1,10 @@
|
||||
use std::fmt;
|
||||
use std::future::Future;
|
||||
use std::io::Write;
|
||||
|
||||
use base64::encode;
|
||||
use base64;
|
||||
use base64::write::EncoderWriter as Base64Encoder;
|
||||
use bytes::Bytes;
|
||||
use serde::Serialize;
|
||||
#[cfg(feature = "json")]
|
||||
use serde_json;
|
||||
@@ -153,12 +156,17 @@ impl RequestBuilder {
|
||||
U: fmt::Display,
|
||||
P: fmt::Display,
|
||||
{
|
||||
let auth = match password {
|
||||
Some(password) => format!("{}:{}", username, password),
|
||||
None => format!("{}:", username),
|
||||
};
|
||||
let header_value = format!("Basic {}", encode(&auth));
|
||||
self.header(crate::header::AUTHORIZATION, &*header_value)
|
||||
let mut header_value = b"Basic ".to_vec();
|
||||
{
|
||||
let mut encoder = Base64Encoder::new(&mut header_value, base64::STANDARD);
|
||||
// The unwraps here are fine because Vec::write* is infallible.
|
||||
write!(encoder, "{}:", username).unwrap();
|
||||
if let Some(password) = password {
|
||||
write!(encoder, "{}", password).unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
self.header(crate::header::AUTHORIZATION, Bytes::from(header_value))
|
||||
}
|
||||
|
||||
/// Enable HTTP bearer authentication.
|
||||
@@ -167,7 +175,7 @@ impl RequestBuilder {
|
||||
T: fmt::Display,
|
||||
{
|
||||
let header_value = format!("Bearer {}", token);
|
||||
self.header(crate::header::AUTHORIZATION, &*header_value)
|
||||
self.header(crate::header::AUTHORIZATION, header_value)
|
||||
}
|
||||
|
||||
/// Set the request body.
|
||||
|
||||
Reference in New Issue
Block a user