43 lines
1,017 B
Rust
43 lines
1,017 B
Rust
use url::Url;
|
|
|
|
#[derive(Debug, Clone)]
|
|
pub struct UptimeKumaEndpoints {
|
|
base_url: Url,
|
|
slug: String,
|
|
}
|
|
|
|
impl UptimeKumaEndpoints {
|
|
pub fn new(base_url: &str, slug: &str) -> Result<Self, url::ParseError> {
|
|
let base_url = Url::parse(base_url.trim_end_matches("/"))?;
|
|
Ok(Self {
|
|
base_url,
|
|
slug: slug.to_string(),
|
|
})
|
|
}
|
|
|
|
pub fn heartbeat_url(&self) -> String {
|
|
let mut url = self.get_url();
|
|
url.path_segments_mut()
|
|
.unwrap()
|
|
.push("heartbeat")
|
|
.push(&self.slug);
|
|
url.to_string()
|
|
}
|
|
|
|
pub fn status_page_url(&self) -> String {
|
|
let mut url = self.get_url();
|
|
url.path_segments_mut()
|
|
.unwrap()
|
|
.push(&self.slug);
|
|
url.to_string()
|
|
}
|
|
|
|
fn get_url(&self) -> Url {
|
|
let mut url = self.base_url.clone();
|
|
url.path_segments_mut()
|
|
.unwrap()
|
|
.push("api")
|
|
.push("status-page");
|
|
url
|
|
}
|
|
}
|