use serde::{Deserialize, Serialize};
#[derive(Deserialize, Serialize, Clone)]
pub struct ListPayload {
#[serde(rename = "page")]
pub page: isize,
#[serde(rename = "pageSize")]
pub page_size: isize,
#[serde(rename = "order")]
pub order: isize,
#[serde(rename = "playerFilter")]
pub player_filter: bool,
#[serde(rename = "movementFilter")]
pub movement_filter: String, #[serde(rename = "movementCategoryFilter")]
pub movement_category_filter: String, #[serde(rename = "weaponFilter")]
pub weapon_filter: String, #[serde(rename = "weaponCategoryFilter")]
pub weapon_category_filter: String, #[serde(rename = "minimumCpu")]
pub minimum_cpu: isize,
#[serde(rename = "maximumCpu")]
pub maximum_cpu: isize,
#[serde(rename = "textFilter")]
pub text_filter: String,
#[serde(rename = "textSearchField")]
pub text_search_field: isize, #[serde(rename = "buyable")]
pub buyable: bool,
#[serde(rename = "prependFeaturedRobot")]
pub prepend_featured_robot: bool,
#[serde(rename = "featuredOnly")]
pub featured_only: bool,
#[serde(rename = "defaultPage")]
pub default_page: bool,
}
impl ListPayload {
pub fn default() -> ListPayload {
ListPayload {
page: 1,
page_size: 100,
order: 0,
player_filter: false,
movement_filter: "100000,200000,300000,400000,500000,600000,700000,800000,900000,1000000,1100000,1200000".to_string(),
movement_category_filter: "100000,200000,300000,400000,500000,600000,700000,800000,900000,1000000,1100000,1200000".to_string(),
weapon_filter: "10000000,20000000,25000000,30000000,40000000,50000000,60000000,65000000,70100000,75000000".to_string(),
weapon_category_filter: "10000000,20000000,25000000,30000000,40000000,50000000,60000000,65000000,70100000,75000000".to_string(),
minimum_cpu: -1,
maximum_cpu: -1,
text_filter: "".to_string(),
text_search_field: 0,
buyable: true,
prepend_featured_robot: false,
featured_only: false,
default_page: true,
}
}
pub fn empty() -> ListPayload {
ListPayload {
page: 1,
page_size: 100,
order: 0,
player_filter: false,
movement_filter: "".to_string(),
movement_category_filter: "".to_string(),
weapon_filter: "".to_string(),
weapon_category_filter: "".to_string(),
minimum_cpu: -1,
maximum_cpu: -1,
text_filter: "".to_string(),
text_search_field: 0,
buyable: true,
prepend_featured_robot: false,
featured_only: false,
default_page: false,
}
}
}
#[derive(Deserialize, Serialize, Clone)]
pub struct FactoryInfo<T> {
#[serde(rename = "response")]
pub response: T,
#[serde(rename = "statusCode")]
pub status_code: usize,
}
#[derive(Deserialize, Serialize, Clone)]
pub struct RoboShopItemsInfo {
#[serde(rename = "roboShopItems")]
pub roboshop_items: Vec<FactoryRobotListInfo>,
}
#[derive(Deserialize, Serialize, Clone)]
pub struct FactoryRobotListInfo {
#[serde(rename = "itemId")]
pub item_id: usize,
#[serde(rename = "itemName")]
pub item_name: String,
#[serde(rename = "itemDescription")]
pub item_description: String,
#[serde(rename = "thumbnail")]
pub thumbnail: String, #[serde(rename = "addedBy")]
pub added_by: String,
#[serde(rename = "addedByDisplayName")]
pub added_by_display_name: String,
#[serde(rename = "addedDate")]
pub added_date: String, #[serde(rename = "expiryDate")]
pub expiry_date: String, #[serde(rename = "cpu")]
pub cpu: usize,
#[serde(rename = "totalRobotRanking")]
pub total_robot_ranking: usize,
#[serde(rename = "rentCount")]
pub rent_count: usize,
#[serde(rename = "buyCount")]
pub buy_count: usize,
#[serde(rename = "buyable")]
pub buyable: bool,
#[serde(rename = "removedDate")]
pub removed_date: Option<String>,
#[serde(rename = "banDate")]
pub ban_date: Option<String>,
#[serde(rename = "featured")]
pub featured: bool,
#[serde(rename = "bannerMessage")]
pub banner_message: Option<String>,
#[serde(rename = "combatRating")]
pub combat_rating: f32,
#[serde(rename = "cosmeticRating")]
pub cosmetic_rating: f32,
#[serde(rename = "cubeAmounts")]
pub cube_amounts: String, }
impl FactoryRobotListInfo {
pub fn cube_amounts_map(&self) -> serde_json::Result<std::collections::HashMap<u32, u32>> {
parse_cube_amounts(&self.cube_amounts)
}
}
impl std::string::ToString for FactoryRobotListInfo {
fn to_string(&self) -> String {
format!("{} by {} ({})", &self.item_name, &self.added_by_display_name, &self.item_id)
}
}
#[derive(Deserialize, Serialize, Clone)]
pub struct FactoryRobotGetInfo {
#[serde(rename = "id")]
pub item_id: usize,
#[serde(rename = "name")]
pub item_name: String,
#[serde(rename = "description")]
pub item_description: String,
#[serde(rename = "thumbnail")]
pub thumbnail: String, #[serde(rename = "addedBy")]
pub added_by: String,
#[serde(rename = "addedByDisplayName")]
pub added_by_display_name: String,
#[serde(rename = "addedDate")]
pub added_date: String, #[serde(rename = "expiryDate")]
pub expiry_date: String, #[serde(rename = "cpu")]
pub cpu: usize,
#[serde(rename = "totalRobotRanking")]
pub total_robot_ranking: usize,
#[serde(rename = "rentCount")]
pub rent_count: usize,
#[serde(rename = "buyCount")]
pub buy_count: usize,
#[serde(rename = "buyable")]
pub buyable: bool,
#[serde(rename = "removedDate")]
pub removed_date: Option<String>,
#[serde(rename = "banDate")]
pub ban_date: Option<String>,
#[serde(rename = "featured")]
pub featured: bool,
#[serde(rename = "bannerMessage")]
pub banner_message: Option<String>,
#[serde(rename = "combatRating")]
pub combat_rating: f32,
#[serde(rename = "cosmeticRating")]
pub cosmetic_rating: f32,
#[serde(rename = "cubeData")]
pub cube_data: String,
#[serde(rename = "colourData")]
pub colour_data: String,
#[serde(rename = "cubeAmounts")]
pub cube_amounts: String, }
impl FactoryRobotGetInfo {
pub fn cube_amounts_map(&self) -> serde_json::Result<std::collections::HashMap<u32, u32>> {
parse_cube_amounts(&self.cube_amounts)
}
}
impl std::string::ToString for FactoryRobotGetInfo {
fn to_string(&self) -> String {
format!("{} by {} ({})", &self.item_name, &self.added_by_display_name, &self.item_id)
}
}
pub fn parse_cube_amounts(s: &str) -> serde_json::Result<std::collections::HashMap<u32, u32>> {
if s.is_empty() {
Ok(std::collections::HashMap::default())
} else {
serde_json::from_str(s)
}
}