mod-manager/src/api/games.rs

63 lines
1.3 KiB
Rust
Raw Normal View History

2023-12-21 11:30:30 +00:00
use serde::Deserialize;
use crate::api::*;
#[derive(Deserialize, Debug)]
struct GetGamesResponse {
2023-12-21 11:30:30 +00:00
data: Vec<Game>,
pagination: Pagination,
}
#[derive(Deserialize, Debug)]
struct GetGameResponse {
data: Game,
}
2023-12-21 11:30:30 +00:00
#[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();
2023-12-21 11:30:30 +00:00
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;
}