use serde::{Deserialize, Serialize}; #[derive(Deserialize, Serialize, Debug, Clone)] pub struct ErrorPayload { #[serde(rename = "error")] pub error: isize, #[serde(rename = "errorMessage")] pub error_message: String, } // search endpoint #[derive(Deserialize, Serialize, Clone)] pub struct SearchPayload { #[serde(rename = "text")] pub text: Option, #[serde(rename = "baseCpuMinimum")] pub base_minimum_cpu: Option, #[serde(rename = "baseCpuMaximum")] pub base_maximum_cpu: Option, #[serde(rename = "weaponCpuMinimum")] pub weapon_minimum_cpu: Option, #[serde(rename = "weaponCpuMaximum")] pub weapon_maximum_cpu: Option, #[serde(rename = "cosmeticCpuMinimum")] pub cosmetic_minimum_cpu: Option, #[serde(rename = "cosmeticCpuMaximum")] pub cosmetic_maximum_cpu: Option, #[serde(rename = "clusterMinimum")] pub cluster_minimum: Option, #[serde(rename = "clusterMaximum")] pub cluster_maximum: Option, #[serde(rename = "dateMinimum")] pub date_minimum: Option, #[serde(rename = "dateMaximum")] pub date_maximum: Option, #[serde(rename = "creatorId")] pub creator_id: Option, // GUID #[serde(rename = "page")] pub page: Option, #[serde(rename = "count")] pub count: Option, #[serde(rename = "sortBy")] pub sort_by: String, #[serde(rename = "orderBy")] pub order_by: String, } impl Default for SearchPayload { fn default() -> Self { Self { text: None, base_minimum_cpu: None, base_maximum_cpu: None, weapon_minimum_cpu: None, weapon_maximum_cpu: None, cosmetic_minimum_cpu: None, cosmetic_maximum_cpu: None, cluster_minimum: None, cluster_maximum: None, date_minimum: None, date_maximum: None, creator_id: None, page: None, count: None, sort_by: "default".to_owned(), order_by: "ascending".to_owned(), } } } #[derive(Deserialize, Serialize, Clone, Debug)] pub struct SearchResponse { #[serde(rename = "results")] pub results: Vec, } #[derive(Deserialize, Serialize, Clone, Debug)] pub struct SearchResponseItem { #[serde(rename = "robot")] pub robot: RobotInfo, #[serde(rename = "prices")] pub prices: Vec, #[serde(rename = "purchased")] pub purchased: bool, } #[derive(Deserialize, Serialize, Clone, Debug)] pub struct RobotInfo { #[serde(rename = "id")] pub id: String, // GUID #[serde(rename = "name")] pub name: String, #[serde(rename = "creatorId")] pub creator_id: String, // GUID #[serde(rename = "creatorName")] pub creator_name: String, #[serde(rename = "created")] pub created: String, // date #[serde(rename = "image")] pub image: String, // base64?? #[serde(rename = "baseCpu")] pub base_cpu: isize, #[serde(rename = "weaponCpu")] pub weapon_cpu: isize, #[serde(rename = "cosmeticCpu")] pub cosmetic_cpu: isize, #[serde(rename = "clusterCount")] pub cluster_count: isize, #[serde(rename = "blockCounts")] pub block_counts: std::collections::HashMap, #[serde(rename = "materialsUsed")] pub materials_used: std::collections::HashSet, #[serde(rename = "minimumOffsetX")] pub minimum_offset_x: f64, #[serde(rename = "minimumOffsetY")] pub minimum_offset_y: f64, #[serde(rename = "minimumOffsetZ")] pub minimum_offset_z: f64, #[serde(rename = "maximumOffsetX")] pub maximum_offset_x: f64, #[serde(rename = "maximumOffsetY")] pub maximum_offset_y: f64, #[serde(rename = "maximumOffsetZ")] pub maximum_offset_z: f64, } impl std::string::ToString for RobotInfo { fn to_string(&self) -> String { format!("{} ({}) by {} ({})", &self.name, &self.id, &self.creator_name, &self.creator_id) } } #[derive(Deserialize, Serialize, Clone, Debug)] pub struct RobotPrice { #[serde(rename = "currency")] pub currency: isize, #[serde(rename = "amount")] pub amount: isize, } // create robot endpoint #[derive(Deserialize, Serialize, Clone, Debug)] pub struct CreateRobotPayload { #[serde(rename = "name")] pub name: String, #[serde(rename = "data")] pub data: String, // base64 #[serde(rename = "image")] pub image: String, // base64?? #[serde(rename = "baseCpu")] pub base_cpu: isize, #[serde(rename = "weaponCpu")] pub weapon_cpu: isize, #[serde(rename = "cosmeticCpu")] pub cosmetic_cpu: isize, #[serde(rename = "clusterCount")] pub cluster_count: isize, #[serde(rename = "blockCounts")] pub block_counts: std::collections::HashMap, #[serde(rename = "materialsUsed")] pub materials_used: std::collections::HashSet, #[serde(rename = "minimumOffsetX")] pub minimum_offset_x: f64, #[serde(rename = "minimumOffsetY")] pub minimum_offset_y: f64, #[serde(rename = "minimumOffsetZ")] pub minimum_offset_z: f64, #[serde(rename = "maximumOffsetX")] pub maximum_offset_x: f64, #[serde(rename = "maximumOffsetY")] pub maximum_offset_y: f64, #[serde(rename = "maximumOffsetZ")] pub maximum_offset_z: f64, } #[derive(Deserialize, Serialize, Clone, Debug)] pub struct CreateRobotResponse { #[serde(rename = "header")] pub header: RobotInfo, } // factory info endpoint // (no payload -- this is a GET request) #[derive(Deserialize, Serialize, Clone, Debug)] pub struct FactoryInfoResponse { #[serde(rename = "robotCount")] pub robot_count: isize, #[serde(rename = "robotLimit")] pub robot_limit: isize, #[serde(rename = "publishedRobotCount")] pub published_robot_count: isize, #[serde(rename = "publishedRobotLimit")] pub published_robot_limit: isize, } // publish robot endpoint #[derive(Deserialize, Serialize, Clone, Debug)] pub struct PublishRobotPayload { #[serde(rename = "name")] pub name: String, #[serde(rename = "description")] pub description: String, #[serde(rename = "techPoints")] pub techpoints: isize, #[serde(rename = "bloxCoin")] pub bloxcoin: isize, } #[derive(Deserialize, Serialize, Clone, Debug)] pub struct PublishRobotResponse { #[serde(rename = "header")] pub header: RobotInfo, #[serde(rename = "data")] pub data: String, // base64 } // get my robots endpoint // (no payload -- this is a GET request) #[derive(Deserialize, Serialize, Clone, Debug)] pub struct MyRobotsResponse { #[serde(rename = "vehicles")] pub vehicles: Vec, } // get robot endpoint // (no payload -- this is a GET request) #[derive(Deserialize, Serialize, Clone, Debug)] pub struct GetRobotResponse { #[serde(rename = "header")] pub header: RobotInfo, #[serde(rename = "data")] pub data: String, // base64 #[serde(rename = "description")] pub description: String, #[serde(rename = "created")] pub created: String, // date }