refactor: update request method handling to use reqwest::Method enum

fix: duplicated checks tray menu
This commit is contained in:
Tunglies
2025-03-15 13:23:17 +08:00
parent 488e8ef1d5
commit 1ec7a0f23c
3 changed files with 27 additions and 25 deletions

View File

@@ -5,7 +5,6 @@ use crate::{
use anyhow::Result; use anyhow::Result;
use log::LevelFilter; use log::LevelFilter;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use serde_json::Value;
/// ### `verge.yaml` schema /// ### `verge.yaml` schema
#[derive(Default, Debug, Clone, Deserialize, Serialize)] #[derive(Default, Debug, Clone, Deserialize, Serialize)]

View File

@@ -1,4 +1,4 @@
use reqwest::header::HeaderMap; use reqwest::{Method, header::HeaderMap};
use serde_json::json; use serde_json::json;
use std::{ use std::{
sync::{Arc, Mutex}, sync::{Arc, Mutex},
@@ -45,7 +45,7 @@ impl MihomoManager {
async fn send_request( async fn send_request(
&self, &self,
method: &str, method: Method,
url: String, url: String,
data: Option<serde_json::Value>, data: Option<serde_json::Value>,
) -> Result<serde_json::Value, String> { ) -> Result<serde_json::Value, String> {
@@ -55,40 +55,43 @@ impl MihomoManager {
.timeout(Duration::from_secs(60)) .timeout(Duration::from_secs(60))
.build() .build()
.map_err(|e| e.to_string())? .map_err(|e| e.to_string())?
.request( .request(method.clone(), &url)
match method {
"GET" => reqwest::Method::GET,
"PUT" => reqwest::Method::PUT,
"POST" => reqwest::Method::POST,
"PATCH" => reqwest::Method::PATCH,
_ => reqwest::Method::GET,
},
&url,
)
.json(&data.unwrap_or(json!({}))) .json(&data.unwrap_or(json!({})))
.send() .send()
.await .await
.map_err(|e| e.to_string())?; .map_err(|e| e.to_string())?;
let response = if method != "PUT" { let response = match method {
client_response.json::<serde_json::Value>().await Method::PATCH => {
let status = client_response.status();
if status.as_u16() == 204 {
json!({"code": 204})
} else { } else {
client_response.text().await.map(|text| json!(text)) client_response
.json::<serde_json::Value>()
.await
.map_err(|e| e.to_string())?
} }
.map_err(|e| e.to_string())?; }
Method::PUT => json!(client_response.text().await.map_err(|e| e.to_string())?),
_ => client_response
.json::<serde_json::Value>()
.await
.map_err(|e| e.to_string())?,
};
Ok(response) Ok(response)
} }
pub async fn refresh_proxies(&self) -> Result<&Self, String> { pub async fn refresh_proxies(&self) -> Result<&Self, String> {
let url = format!("{}/proxies", self.mihomo_server); let url = format!("{}/proxies", self.mihomo_server);
let proxies = self.send_request("GET", url, None).await?; let proxies = self.send_request(Method::GET, url, None).await?;
self.update_proxies(proxies); self.update_proxies(proxies);
Ok(self) Ok(self)
} }
pub async fn refresh_providers_proxies(&self) -> Result<&Self, String> { pub async fn refresh_providers_proxies(&self) -> Result<&Self, String> {
let url = format!("{}/providers/proxies", self.mihomo_server); let url = format!("{}/providers/proxies", self.mihomo_server);
let providers_proxies = self.send_request("GET", url, None).await?; let providers_proxies = self.send_request(Method::GET, url, None).await?;
self.update_providers_proxies(providers_proxies); self.update_providers_proxies(providers_proxies);
Ok(self) Ok(self)
} }
@@ -100,13 +103,13 @@ impl MihomoManager {
let payload = serde_json::json!({ let payload = serde_json::json!({
"path": clash_config_path, "path": clash_config_path,
}); });
let _response = self.send_request("PUT", url, Some(payload)).await?; let _response = self.send_request(Method::PUT, url, Some(payload)).await?;
Ok(()) Ok(())
} }
pub async fn patch_configs(&self, config: serde_json::Value) -> Result<(), String> { pub async fn patch_configs(&self, config: serde_json::Value) -> Result<(), String> {
let url = format!("{}/configs", self.mihomo_server); let url = format!("{}/configs", self.mihomo_server);
let response = self.send_request("PATCH", url, Some(config)).await?; let response = self.send_request(Method::PATCH, url, Some(config)).await?;
if response["code"] == 204 { if response["code"] == 204 {
Ok(()) Ok(())
} else { } else {
@@ -128,7 +131,7 @@ impl MihomoManager {
"{}/proxies/{}/delay?url={}&timeout={}", "{}/proxies/{}/delay?url={}&timeout={}",
self.mihomo_server, name, test_url, timeout self.mihomo_server, name, test_url, timeout
); );
let response = self.send_request("GET", url, None).await?; let response = self.send_request(Method::GET, url, None).await?;
Ok(response) Ok(response)
} }
} }

View File

@@ -59,7 +59,7 @@ pub fn change_clash_mode(mode: String) {
log_err!(tray::Tray::global().update_icon(None)); log_err!(tray::Tray::global().update_icon(None));
} }
} }
Err(err) => log::error!(target: "app", "{err}"), Err(err) => println!("{err}"),
} }
}); });
} }