- Split the monolithic unlock checker into a module tree (mod.rs:9–133), wiring service-specific tasks while keeping exported Tauri commands untouched. - Centralize shared data and helpers in types.rs (1–40) and utils.rs (1–21) for reusable timestamp and emoji logic. - Move each provider’s logic into its own file (bilibili.rs, disney_plus.rs, netflix.rs, etc.), preserving behavior and making future additions or fixes localized.
67 lines
2.3 KiB
Rust
67 lines
2.3 KiB
Rust
use regex::Regex;
|
|
use reqwest::Client;
|
|
|
|
use crate::{logging, utils::logging::Type};
|
|
|
|
use super::UnlockItem;
|
|
use super::utils::{country_code_to_emoji, get_local_date_string};
|
|
|
|
pub(super) async fn check_gemini(client: &Client) -> UnlockItem {
|
|
let url = "https://gemini.google.com";
|
|
|
|
match client.get(url).send().await {
|
|
Ok(response) => {
|
|
if let Ok(body) = response.text().await {
|
|
let is_ok = body.contains("45631641,null,true");
|
|
let status = if is_ok { "Yes" } else { "No" };
|
|
|
|
let re = match Regex::new(r#",2,1,200,"([A-Z]{3})""#) {
|
|
Ok(re) => re,
|
|
Err(e) => {
|
|
logging!(
|
|
error,
|
|
Type::Network,
|
|
"Failed to compile Gemini regex: {}",
|
|
e
|
|
);
|
|
return UnlockItem {
|
|
name: "Gemini".to_string(),
|
|
status: "Failed".to_string(),
|
|
region: None,
|
|
check_time: Some(get_local_date_string()),
|
|
};
|
|
}
|
|
};
|
|
|
|
let region = re.captures(&body).and_then(|caps| {
|
|
caps.get(1).map(|m| {
|
|
let country_code = m.as_str();
|
|
let emoji = country_code_to_emoji(country_code);
|
|
format!("{emoji}{country_code}")
|
|
})
|
|
});
|
|
|
|
UnlockItem {
|
|
name: "Gemini".to_string(),
|
|
status: status.to_string(),
|
|
region,
|
|
check_time: Some(get_local_date_string()),
|
|
}
|
|
} else {
|
|
UnlockItem {
|
|
name: "Gemini".to_string(),
|
|
status: "Failed".to_string(),
|
|
region: None,
|
|
check_time: Some(get_local_date_string()),
|
|
}
|
|
}
|
|
}
|
|
Err(_) => UnlockItem {
|
|
name: "Gemini".to_string(),
|
|
status: "Failed".to_string(),
|
|
region: None,
|
|
check_time: Some(get_local_date_string()),
|
|
},
|
|
}
|
|
}
|