pub use crate::private::client::uri_builder::UriBuilder;
use bytes::Bytes;
use conjure_error::Error;
use conjure_object::{BearerToken, Plain, ToPlain};
use http::header::{HeaderName, HeaderValue, AUTHORIZATION, COOKIE};
use http::Request;
mod uri_builder;
pub fn encode_header<B>(
request: &mut Request<B>,
header: &'static str,
value: &dyn Plain,
) -> Result<(), Error> {
let header = HeaderName::from_static(header);
let value = HeaderValue::from_maybe_shared(Bytes::from(value.to_plain()))
.map_err(Error::internal_safe)?;
request.headers_mut().insert(header, value);
Ok(())
}
pub fn encode_cookie_auth<B>(request: &mut Request<B>, prefix: &str, value: &BearerToken) {
encode_auth(request, COOKIE, prefix, value)
}
pub fn encode_header_auth<B>(request: &mut Request<B>, value: &BearerToken) {
encode_auth(request, AUTHORIZATION, "Bearer ", value);
}
fn encode_auth<B>(request: &mut Request<B>, header: HeaderName, prefix: &str, value: &BearerToken) {
let value = format!("{}{}", prefix, value.as_str());
let value = HeaderValue::from_maybe_shared(Bytes::from(value))
.expect("bearer tokens are valid headers");
request.headers_mut().insert(header, value);
}