packium/src/modrinth/versions.rs

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()),
}
}