uptime-kuma-dashboard/formgen.txt

124 lines
2.7 KiB
Text

.
├── 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"