From 7dd317512d97ebfe41e9b418690fb14b7c5f3f40 Mon Sep 17 00:00:00 2001 From: Daan Boerlage Date: Thu, 6 Apr 2023 12:52:01 +0200 Subject: [PATCH] Dynamically resolve runelite api version rather than hardcoding it --- src/collectors/mod.rs | 24 +++++++++++++++++++++++- src/collectors/player_count.rs | 3 ++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/collectors/mod.rs b/src/collectors/mod.rs index 377d9be..f7ed2e3 100644 --- a/src/collectors/mod.rs +++ b/src/collectors/mod.rs @@ -1,9 +1,31 @@ pub mod player_count; pub mod stats; +use serde::Deserialize; + pub trait PromMetric { fn to_metric_string(self: &Self) -> String; } pub const USER_AGENT: &str = "osrs-prometheus-exporter"; -pub const RUNELITE_API_VERSION: &str = "runelite-1.9.13"; + +#[derive(Deserialize)] +struct GithubTag { + name: String, +} + +async fn get_runelite_version() -> eyre::Result { + let resp = reqwest::Client::new() + .get("https://api.github.com/repos/runelite/runelite/tags") + .header("User-Agent", USER_AGENT) + .send() + .await? + .json::>() + .await?; + + if let Some(latest) = resp.first() { + Ok(latest.name.replace("parent-", "")) + } else { + Err(eyre::eyre!("Failed to get github tags for runelite version")) + } +} \ No newline at end of file diff --git a/src/collectors/player_count.rs b/src/collectors/player_count.rs index bbd7150..0eeb23c 100644 --- a/src/collectors/player_count.rs +++ b/src/collectors/player_count.rs @@ -122,7 +122,8 @@ impl World { } pub async fn get_player_count() -> eyre::Result> { - let req_url = format!("https://api.runelite.net/{}/worlds.js", super::RUNELITE_API_VERSION); + let runelite_version = super::get_runelite_version().await?; + let req_url = format!("https://api.runelite.net/{}/worlds.js", runelite_version); let resp = reqwest::Client::new() .get(req_url) .header("User-Agent", super::USER_AGENT)