diff --git a/src/platform.rs b/src/platform.rs
index c9e0589..da04627 100644
--- a/src/platform.rs
+++ b/src/platform.rs
@@ -1,6 +1,7 @@
mod curseforge;
mod github;
mod modrinth;
+mod multiplatform;
mod traits;
use std::sync::Arc;
@@ -8,6 +9,7 @@ use std::sync::Arc;
pub use curseforge::CurseForgePlatform;
pub use github::GitHubPlatform;
pub use modrinth::ModrinthPlatform;
+pub use multiplatform::MultiplatformPlatform;
pub use traits::PlatformClient;
use crate::{error::Result, http, rate_limiter::RateLimiter};
@@ -55,6 +57,14 @@ fn create_client(
api_key,
)))
},
+ "multiplatform" => {
+ let cf = CurseForgePlatform::with_client(get_http_client(), api_key);
+ let mr = ModrinthPlatform::with_client(get_http_client());
+ Ok(Box::new(MultiplatformPlatform::new(
+ Arc::new(cf),
+ Arc::new(mr),
+ )))
+ },
_ => {
Err(crate::error::PakkerError::ConfigError(format!(
"Unknown platform: {platform}"
@@ -117,4 +127,12 @@ impl PlatformClient for RateLimitedPlatform {
self.rate_limiter.wait_for(&self.platform_name).await;
self.platform.lookup_by_hash(hash).await
}
+
+ async fn request_project_from_slug(
+ &self,
+ slug: &str,
+ ) -> Result