diff --git a/.changes/updater-override-header.md b/.changes/updater-override-header.md new file mode 100644 index 00000000..7da472b0 --- /dev/null +++ b/.changes/updater-override-header.md @@ -0,0 +1,6 @@ +--- +updater: patch +updater-js: patch +--- + +Fix `check` and `download` overrides the `accept` header diff --git a/plugins/updater/src/updater.rs b/plugins/updater/src/updater.rs index ebd5523c..78fc0a9b 100644 --- a/plugins/updater/src/updater.rs +++ b/plugins/updater/src/updater.rs @@ -17,7 +17,7 @@ use std::ffi::OsStr; use base64::Engine; use futures_util::StreamExt; -use http::HeaderName; +use http::{header::ACCEPT, HeaderName}; use minisign_verify::{PublicKey, Signature}; use percent_encoding::{AsciiSet, CONTROLS}; use reqwest::{ @@ -345,7 +345,9 @@ impl Updater { pub async fn check(&self) -> Result> { // we want JSON only let mut headers = self.headers.clone(); - headers.insert("Accept", HeaderValue::from_str("application/json").unwrap()); + if !headers.contains_key(ACCEPT) { + headers.insert(ACCEPT, HeaderValue::from_static("application/json")); + } // Set SSL certs for linux if they aren't available. #[cfg(target_os = "linux")] @@ -549,10 +551,9 @@ impl Update { ) -> Result> { // set our headers let mut headers = self.headers.clone(); - headers.insert( - "Accept", - HeaderValue::from_str("application/octet-stream").unwrap(), - ); + if !headers.contains_key(ACCEPT) { + headers.insert(ACCEPT, HeaderValue::from_static("application/octet-stream")); + } let mut request = ClientBuilder::new().user_agent(UPDATER_USER_AGENT); if let Some(timeout) = self.timeout {