diff --git a/src-tauri/src/core/clash_api.rs b/src-tauri/src/core/clash_api.rs index eb63f49e..b594ba62 100644 --- a/src-tauri/src/core/clash_api.rs +++ b/src-tauri/src/core/clash_api.rs @@ -1,6 +1,4 @@ -use crate::config::Config; use anyhow::Result; -use reqwest::header::HeaderMap; #[derive(Debug, Clone, Default, PartialEq)] pub struct Rate { @@ -8,26 +6,11 @@ pub struct Rate { pub down: u64, } -/// 根据clash info获取clash服务地址和请求头 -pub fn clash_client_info() -> Result<(String, HeaderMap)> { - let client = { Config::clash().data().get_client_info() }; - - let server = format!("http://{}", client.server); - - let mut headers = HeaderMap::new(); - headers.insert("Content-Type", "application/json".parse()?); - - if let Some(secret) = client.secret { - let secret = format!("Bearer {}", secret).parse()?; - headers.insert("Authorization", secret); - } - - Ok((server, headers)) -} - #[cfg(target_os = "macos")] pub fn get_traffic_ws_url() -> Result { - let (url, _) = clash_client_info()?; + use crate::module::mihomo::MihomoManager; + + let (url, _) = MihomoManager::get_clash_client_info().unwrap(); let ws_url = url.replace("http://", "ws://") + "/traffic"; Ok(ws_url) } \ No newline at end of file diff --git a/src-tauri/src/crate_mihomo_api/src/lib.rs b/src-tauri/src/crate_mihomo_api/src/lib.rs index 41f67a86..13578df6 100644 --- a/src-tauri/src/crate_mihomo_api/src/lib.rs +++ b/src-tauri/src/crate_mihomo_api/src/lib.rs @@ -100,16 +100,8 @@ impl MihomoManager { let payload = serde_json::json!({ "path": clash_config_path, }); - let response = self.send_request("PUT", url, Some(payload)).await?; - println!("put_configs_force::{:?}", response); + let _response = self.send_request("PUT", url, Some(payload)).await?; Ok(()) - // if response["code"] == 204 { - // Ok(()) - // } else { - // Err(response["message"] - // .as_str() - // .unwrap_or("unknown error") - // .to_string()) } pub async fn patch_configs(&self, config: serde_json::Value) -> Result<(), String> { diff --git a/src-tauri/src/module/mihomo.rs b/src-tauri/src/module/mihomo.rs index 3089116e..41c8ac10 100644 --- a/src-tauri/src/module/mihomo.rs +++ b/src-tauri/src/module/mihomo.rs @@ -1,7 +1,8 @@ -use crate::core::clash_api; +use crate::config::Config; use mihomo_api; use once_cell::sync::{Lazy, OnceCell}; use std::sync::Mutex; +use tauri::http::HeaderMap; pub struct MihomoManager { mihomo: Mutex>, @@ -17,7 +18,7 @@ impl MihomoManager { pub fn global() -> mihomo_api::MihomoManager { let instance = MihomoManager::__global(); - let (current_server, headers) = clash_api::clash_client_info().unwrap(); + let (current_server, headers) = MihomoManager::get_clash_client_info().unwrap(); let lock = instance.mihomo.lock().unwrap(); if let Some(mihomo) = lock.get() { @@ -31,3 +32,18 @@ impl MihomoManager { lock.get().unwrap().clone() } } + +impl MihomoManager { + pub fn get_clash_client_info() -> Option<(String, HeaderMap)> { + let client = { Config::clash().data().get_client_info() }; + let server = format!("http://{}", client.server); + let mut headers = HeaderMap::new(); + headers.insert("Content-Type", "application/json".parse().unwrap()); + if let Some(secret) = client.secret { + let secret = format!("Bearer {}", secret).parse().unwrap(); + headers.insert("Authorization", secret); + } + + Some((server, headers)) + } +}