From 21b5e443bfba6d6d3bb9401229ec03183ebf754c Mon Sep 17 00:00:00 2001 From: Warren Hood Date: Sun, 18 Aug 2024 23:54:53 +0200 Subject: [PATCH] Store metadata on whether the mod is needed on client and server sides --- src/providers/mod.rs | 6 +++++- src/providers/modrinth.rs | 14 ++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/providers/mod.rs b/src/providers/mod.rs index c49c1a0..21b7c76 100644 --- a/src/providers/mod.rs +++ b/src/providers/mod.rs @@ -18,5 +18,9 @@ pub struct PinnedMod { /// Version of mod pub version: String, /// Pinned dependencies of a pinned mod - pub deps: Option> + pub deps: Option>, + /// Server side + pub server_side: bool, + /// Required on client side + pub client_side: bool } \ No newline at end of file diff --git a/src/providers/modrinth.rs b/src/providers/modrinth.rs index 7affff0..ed963d3 100644 --- a/src/providers/modrinth.rs +++ b/src/providers/modrinth.rs @@ -15,6 +15,8 @@ pub struct Modrinth { #[derive(Serialize, Deserialize)] struct ModrinthProject { slug: String, + client_side: String, + server_side: String } #[derive(Serialize, Deserialize, Debug)] @@ -63,8 +65,8 @@ impl Modrinth { } } - pub async fn get_project_slug(&self, project_id: &str) -> Result> { - let mut project: ModrinthProject = self + pub async fn get_project(&self, project_id: &str) -> Result> { + let project: ModrinthProject = self .client .get(format!("https://api.modrinth.com/v2/project/{project_id}")) .send() @@ -72,7 +74,7 @@ impl Modrinth { .json() .await?; - Ok(project.slug) + Ok(project) } pub async fn get_mod_meta( @@ -92,7 +94,7 @@ impl Modrinth { game_version_override, ) .await?; - let project_slug = self.get_project_slug(project_id).await?; + let project_slug = self.get_project(project_id).await?.slug; for version in project_versions.iter() { if project_version.is_none() || project_version.unwrap_or("*") == version.id { @@ -159,6 +161,8 @@ impl Modrinth { } } + let project = self.get_project(&mod_meta.name).await?; + Ok(PinnedMod { source: package .files @@ -180,6 +184,8 @@ impl Modrinth { } else { None }, + server_side: project.server_side != "optional", + client_side: project.client_side != "optional" }) }