use anyhow::{Context, Result};
use reqwest::header::{AUTHORIZATION, HeaderMap, HeaderName, HeaderValue};
const ENV_TOKEN: &str = "KANADE_AUTH_TOKEN";
const SOURCE_HEADER: HeaderName = HeaderName::from_static("x-kanade-source");
const SOURCE_VALUE: HeaderValue = HeaderValue::from_static("cli");
pub fn authed_client() -> Result<reqwest::Client> {
let mut headers = HeaderMap::new();
headers.insert(SOURCE_HEADER, SOURCE_VALUE);
if let Ok(token) = std::env::var(ENV_TOKEN)
&& !token.is_empty()
{
let value = HeaderValue::from_str(&format!("Bearer {token}"))
.context("KANADE_AUTH_TOKEN contains non-ASCII / control characters")?;
headers.insert(AUTHORIZATION, value);
}
reqwest::Client::builder()
.default_headers(headers)
.build()
.context("build reqwest::Client")
}