diff --git a/src-tauri/src/cmd/proxy.rs b/src-tauri/src/cmd/proxy.rs index 3e0f0823..d896dfe8 100644 --- a/src-tauri/src/cmd/proxy.rs +++ b/src-tauri/src/cmd/proxy.rs @@ -2,22 +2,17 @@ use super::CmdResult; use crate::core; use mihomo_api; - #[tauri::command] pub async fn get_proxies() -> CmdResult { - let (mihomo_server, _) = core::clash_api::clash_client_info().unwrap(); - let mihomo = mihomo_api::MihomoManager::new(mihomo_server); - Ok(mihomo - .refresh_proxies() - .await - .unwrap() - .get_proxies()) + let (mihomo_server, headers) = core::clash_api::clash_client_info().unwrap(); + let mihomo = mihomo_api::MihomoManager::new(mihomo_server, headers); + Ok(mihomo.refresh_proxies().await.unwrap().get_proxies()) } #[tauri::command] pub async fn get_providers_proxies() -> CmdResult { - let (mihomo_server, _) = core::clash_api::clash_client_info().unwrap(); - let mihomo = mihomo_api::MihomoManager::new(mihomo_server); + let (mihomo_server, headers) = core::clash_api::clash_client_info().unwrap(); + let mihomo = mihomo_api::MihomoManager::new(mihomo_server, headers); Ok(mihomo .refresh_providers_proxies() .await diff --git a/src-tauri/src/crate_mihomo_api/src/lib.rs b/src-tauri/src/crate_mihomo_api/src/lib.rs index 0b503650..6c4b36a7 100644 --- a/src-tauri/src/crate_mihomo_api/src/lib.rs +++ b/src-tauri/src/crate_mihomo_api/src/lib.rs @@ -1,3 +1,4 @@ +use reqwest::header::HeaderMap; use std::{ sync::{Arc, Mutex}, time::Duration, @@ -6,13 +7,14 @@ pub mod model; pub use model::{MihomoData, MihomoManager}; impl MihomoManager { - pub fn new(mihomo_server: String) -> Self { + pub fn new(mihomo_server: String, headers: HeaderMap) -> Self { Self { mihomo_server, data: Arc::new(Mutex::new(MihomoData { proxies: serde_json::Value::Null, providers_proxies: serde_json::Value::Null, })), + headers: headers, } } @@ -39,6 +41,7 @@ impl MihomoManager { pub async fn refresh_proxies(&self) -> Result<&Self, String> { let url = format!("{}/proxies", self.mihomo_server); let response = reqwest::ClientBuilder::new() + .default_headers(self.headers.clone()) .no_proxy() .timeout(Duration::from_secs(3)) .build() @@ -58,6 +61,7 @@ impl MihomoManager { pub async fn refresh_providers_proxies(&self) -> Result<&Self, String> { let url = format!("{}/providers/proxies", self.mihomo_server); let response = reqwest::ClientBuilder::new() + .default_headers(self.headers.clone()) .no_proxy() .timeout(Duration::from_secs(3)) .build() diff --git a/src-tauri/src/crate_mihomo_api/src/model.rs b/src-tauri/src/crate_mihomo_api/src/model.rs index 4af4b1be..61ab191c 100644 --- a/src-tauri/src/crate_mihomo_api/src/model.rs +++ b/src-tauri/src/crate_mihomo_api/src/model.rs @@ -1,4 +1,5 @@ use std::sync::{Arc, Mutex}; +use reqwest::header::HeaderMap; pub struct MihomoData { pub(crate) proxies: serde_json::Value, @@ -9,6 +10,7 @@ pub struct MihomoData { pub struct MihomoManager { pub(crate) mihomo_server: String, pub(crate) data: Arc>, + pub(crate) headers: HeaderMap, } #[cfg(feature = "debug")]