mod-manager/src/api/games.rs

62 lines
1.3 KiB
Rust

use serde::Deserialize;
use crate::api::*;
#[derive(Deserialize, Debug)]
struct GetGamesResponse {
data: Vec<Game>,
pagination: Pagination,
}
#[derive(Deserialize, Debug)]
struct GetGameResponse {
data: Game,
}
#[derive(Deserialize, Debug)]
struct Game {
id: u32,
name: String,
slug: String,
dateModified: String,
assets: Assets,
status: u32,
apiStatus: u32,
}
#[derive(Deserialize, Debug)]
struct Assets {
iconUrl: Option<String>,
tileUrl: String,
coverUrl: Option<String>,
}
#[derive(Deserialize, Debug)]
struct Pagination {
index: u32,
pageSize: u32,
resultCount: u32,
totalCount: u32,
}
pub fn get_games() -> Vec<String> {
let client = base::get_curse_forge_client().unwrap();
let response = client
.get(&format!("{}/v1/games", base::API_URL))
.send()
.unwrap();
let json: GetGamesResponse = response.json().unwrap();
return json.data.iter().map(|game| game.name.clone()).collect();
}
pub fn get_game(id: &i32) -> Game {
let client = base::get_curse_forge_client().unwrap();
let response = client
.get(&format!("{}/v1/games/{}", base::API_URL, id))
.send()
.unwrap();
let json: GetGameResponse = response.json().unwrap();
return json.data;
}