refactor: migrate clash client info retrieval to MihomoManager

This commit is contained in:
Tunglies
2025-03-09 00:40:16 +08:00
parent e6686e0b82
commit 18f86874ee
3 changed files with 22 additions and 31 deletions

View File

@@ -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<OnceCell<mihomo_api::MihomoManager>>,
@@ -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))
}
}