32 lines
855 B
Rust
32 lines
855 B
Rust
use super::API_BASE_URL;
|
|
use anyhow::{bail, Result};
|
|
use serde::Deserialize;
|
|
|
|
type Response = Vec<ProjectVersion>;
|
|
|
|
#[derive(Debug, Deserialize, Clone)]
|
|
pub struct ProjectVersion {
|
|
pub name: String,
|
|
pub version_number: String,
|
|
pub game_versions: Vec<String>,
|
|
pub version_type: String,
|
|
pub loaders: Vec<String>,
|
|
pub featured: bool,
|
|
pub id: String,
|
|
pub project_id: String,
|
|
pub downloads: i64,
|
|
}
|
|
|
|
pub async fn get_multiple_versions(version_ids: Vec<&String>) -> Result<Response> {
|
|
let version_ids_json = serde_json::to_string(&version_ids)?;
|
|
|
|
let url = format!("{API_BASE_URL}/versions?ids={}", version_ids_json);
|
|
|
|
let response = reqwest::get(url).await?.json::<Response>().await;
|
|
|
|
match response {
|
|
Ok(r) => Ok(r),
|
|
Err(err) => bail!("Error with Modrinth API: {}", err.to_string()),
|
|
}
|
|
}
|