Using heartbeat api instead
This commit is contained in:
parent
4cedb17b60
commit
d024280878
10 changed files with 319 additions and 40 deletions
124
formgen.txt
Normal file
124
formgen.txt
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
.
|
||||
├── Cargo.toml
|
||||
├── formgen.txt
|
||||
├── .gitignore
|
||||
└── src
|
||||
├── i18n
|
||||
│ ├── loader.rs
|
||||
│ ├── mod.rs
|
||||
│ └── translate.rs
|
||||
├── locales
|
||||
│ ├── en-US
|
||||
│ │ └── main.ftl
|
||||
│ └── pt-BR
|
||||
│ └── main.ftl
|
||||
└── main.rs
|
||||
|
||||
6 directories, 9 files
|
||||
|
||||
|
||||
=== CONTEÚDO DOS ARQUIVOS ===
|
||||
|
||||
|
||||
=== ./src/main.rs ===
|
||||
|
||||
use anyhow::{Ok, Result};
|
||||
use clap::Parser;
|
||||
use reqwest::blocking::Client;
|
||||
mod i18n;
|
||||
use i18n::{init_locales, t};
|
||||
|
||||
#[derive(Debug, Parser)]
|
||||
#[command(author, version, about)]
|
||||
struct Args {
|
||||
#[arg(short, long, env = "UPTIME_KUMA_URL")]
|
||||
url: Option<String>,
|
||||
|
||||
#[arg(short, long, env = "UPTIME_KUMA_API_KEY")]
|
||||
api_key: Option<String>,
|
||||
}
|
||||
|
||||
fn main() -> Result<()> {
|
||||
init_locales()?;
|
||||
|
||||
let args = Args::parse();
|
||||
let url = args
|
||||
.url
|
||||
.as_deref()
|
||||
.ok_or_else(|| anyhow::anyhow!("{}", t("missing_url")))?;
|
||||
let api_key = args
|
||||
.api_key
|
||||
.as_deref()
|
||||
.ok_or_else(|| anyhow::anyhow!("{}", t("missing_api_key")))?;
|
||||
|
||||
let client = Client::new();
|
||||
|
||||
let response = client.get(url).basic_auth("", Some(api_key)).send()?;
|
||||
|
||||
if response.status().is_success() {
|
||||
let metrics = response.text()?;
|
||||
println!("{}", t("success"));
|
||||
println!("{}", t("metrics_preview"));
|
||||
println!("{}", &metrics[..200.min(metrics.len())]);
|
||||
} else {
|
||||
println!("{}", response.status());
|
||||
println!("{}: {}", t("Response"), response.text()?);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
=== ./src/i18n/translate.rs ===
|
||||
|
||||
use crate::i18n::loader::LOCALES;
|
||||
use fluent_templates::Loader;
|
||||
use std::str::FromStr;
|
||||
use unic_langid::LanguageIdentifier;
|
||||
|
||||
fn get_sys_locale() -> LanguageIdentifier {
|
||||
let sys_lang = sys_locale::get_locale().unwrap_or_else(|| String::from("pt-BR"));
|
||||
LanguageIdentifier::from_str(&sys_lang).expect("Invalid language")
|
||||
}
|
||||
|
||||
pub fn t(key: &str) -> String {
|
||||
LOCALES.lookup(&get_sys_locale(), key)
|
||||
}
|
||||
|
||||
=== ./src/i18n/loader.rs ===
|
||||
|
||||
use anyhow::Ok;
|
||||
use fluent_templates::static_loader;
|
||||
|
||||
static_loader! {
|
||||
pub static LOCALES = {
|
||||
locales: "./src/locales",
|
||||
fallback_language: "pt-BR",
|
||||
customise: |bundle| bundle.set_use_isolating(false),
|
||||
};
|
||||
}
|
||||
|
||||
pub fn init_locales() -> anyhow::Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
=== ./src/i18n/mod.rs ===
|
||||
|
||||
pub mod loader;
|
||||
pub mod translate;
|
||||
|
||||
pub use loader::init_locales;
|
||||
pub use translate::t;
|
||||
|
||||
=== ./Cargo.toml ===
|
||||
|
||||
[package]
|
||||
name = "uptime-kuma-dashboard"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "4.5", features = ["derive", "env"] }
|
||||
reqwest = { version = "0.12", features = ["blocking", "json"] }
|
||||
anyhow = "1.0"
|
||||
fluent-templates = "0.13.2"
|
||||
unic-langid = "0.9.6"
|
||||
sys-locale = "0.3.2"
|
||||
Loading…
Add table
Add a link
Reference in a new issue