diff --git a/src/args.rs b/src/args.rs index ff40825..0c3aedf 100644 --- a/src/args.rs +++ b/src/args.rs @@ -85,7 +85,7 @@ pub fn get_os_config_path() -> PathBuf { path_buf(&try_redefined(OS_CONFIG_PATH, OS_CONFIG_PATH_REDEFINE)) } -fn get_config_json_path() -> PathBuf { +pub fn get_config_json_path() -> PathBuf { if get_flasher_flag_path().exists() { get_config_json_flasher_path() } else { diff --git a/src/config_json.rs b/src/config_json.rs index 3fa0bae..0c58df7 100644 --- a/src/config_json.rs +++ b/src/config_json.rs @@ -179,7 +179,7 @@ fn strip_api_endpoint(api_endpoint: &str) -> String { } } -fn get_api_key(config_json: &ConfigMap) -> Result> { +pub fn get_api_key(config_json: &ConfigMap) -> Result> { if let Some(value) = config_json.get("deviceApiKey") { if let Some(api_key) = value.as_str() { Ok(Some(api_key.to_string())) diff --git a/src/remote.rs b/src/remote.rs index cadc9f4..5c84d2f 100644 --- a/src/remote.rs +++ b/src/remote.rs @@ -4,6 +4,9 @@ use std::time::Duration; use anyhow::{anyhow, Context, Result}; +use crate::args::get_config_json_path; +use crate::config_json::{get_api_key, read_config_json}; + pub type OverridesMap = HashMap; #[derive(Debug, Serialize, Deserialize, PartialEq)] @@ -58,6 +61,13 @@ fn fetch_configuration_impl( root_certificate: Option, retry: bool, ) -> Result { + let config_json = read_config_json(&get_config_json_path())?; + let api_key = get_api_key(&config_json)?.unwrap_or("".to_string()); + + if !api_key.is_empty() { + debug!("using auth token {:.7}...", api_key); + } + let client = build_reqwest_client(root_certificate)?; let request_fn = if retry { @@ -68,7 +78,7 @@ fn fetch_configuration_impl( info!("Fetching service configuration from {}...", config_url); - let json_data = request_fn(config_url, &client)?.text()?; + let json_data = request_fn(config_url, &api_key, &client)?.text()?; info!("Service configuration retrieved"); @@ -77,13 +87,15 @@ fn fetch_configuration_impl( fn request_config( url: &str, + token: &str, client: &reqwest::blocking::Client, ) -> Result { - Ok(client.get(url).send()?) + Ok(client.get(url).bearer_auth(token).send()?) } fn retry_request_config( url: &str, + token: &str, client: &reqwest::blocking::Client, ) -> Result { let mut sleeped = 0; @@ -91,7 +103,7 @@ fn retry_request_config( let mut last_err = String::new(); loop { - match client.get(url).send() { + match client.get(url).bearer_auth(token).send() { Ok(response) => { return Ok(response); }