use base64::{prelude, write};
use std::{fmt, io::Write};
pub(crate) fn basic_auth<U, P>(username: U, password: Option<P>) -> http_types::headers::HeaderValue
where
U: fmt::Display,
P: fmt::Display,
{
let mut buf = b"Basic ".to_vec();
{
let mut encoder = write::EncoderWriter::new(&mut buf, &prelude::BASE64_STANDARD);
let _ = write!(encoder, "{username}:",);
if let Some(password) = password {
let _ = write!(encoder, "{password}",);
}
}
http_types::headers::HeaderValue::from_bytes(buf).expect("base64 is always valid HeaderValue")
}