An unofficial collection of APIs used in FreeJam games and mods
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

247 lines
7.1KB

  1. use serde::{Deserialize, Serialize};
  2. #[derive(Deserialize, Serialize, Debug, Clone)]
  3. pub struct ErrorPayload {
  4. #[serde(rename = "error")]
  5. pub error: isize,
  6. #[serde(rename = "errorMessage")]
  7. pub error_message: String,
  8. }
  9. // search endpoint
  10. #[derive(Deserialize, Serialize, Clone)]
  11. pub struct SearchPayload {
  12. #[serde(rename = "text")]
  13. pub text: Option<String>,
  14. #[serde(rename = "baseCpuMinimum")]
  15. pub base_minimum_cpu: Option<isize>,
  16. #[serde(rename = "baseCpuMaximum")]
  17. pub base_maximum_cpu: Option<isize>,
  18. #[serde(rename = "weaponCpuMinimum")]
  19. pub weapon_minimum_cpu: Option<isize>,
  20. #[serde(rename = "weaponCpuMaximum")]
  21. pub weapon_maximum_cpu: Option<isize>,
  22. #[serde(rename = "cosmeticCpuMinimum")]
  23. pub cosmetic_minimum_cpu: Option<isize>,
  24. #[serde(rename = "cosmeticCpuMaximum")]
  25. pub cosmetic_maximum_cpu: Option<isize>,
  26. #[serde(rename = "clusterMinimum")]
  27. pub cluster_minimum: Option<isize>,
  28. #[serde(rename = "clusterMaximum")]
  29. pub cluster_maximum: Option<isize>,
  30. #[serde(rename = "dateMinimum")]
  31. pub date_minimum: Option<String>,
  32. #[serde(rename = "dateMaximum")]
  33. pub date_maximum: Option<String>,
  34. #[serde(rename = "creatorId")]
  35. pub creator_id: Option<String>, // GUID
  36. #[serde(rename = "page")]
  37. pub page: Option<isize>,
  38. #[serde(rename = "count")]
  39. pub count: Option<isize>,
  40. #[serde(rename = "sortBy")]
  41. pub sort_by: String,
  42. #[serde(rename = "orderBy")]
  43. pub order_by: String,
  44. }
  45. impl Default for SearchPayload {
  46. fn default() -> Self {
  47. Self {
  48. text: None,
  49. base_minimum_cpu: None,
  50. base_maximum_cpu: None,
  51. weapon_minimum_cpu: None,
  52. weapon_maximum_cpu: None,
  53. cosmetic_minimum_cpu: None,
  54. cosmetic_maximum_cpu: None,
  55. cluster_minimum: None,
  56. cluster_maximum: None,
  57. date_minimum: None,
  58. date_maximum: None,
  59. creator_id: None,
  60. page: None,
  61. count: None,
  62. sort_by: "default".to_owned(),
  63. order_by: "ascending".to_owned(),
  64. }
  65. }
  66. }
  67. #[derive(Deserialize, Serialize, Clone, Debug)]
  68. pub struct SearchResponse {
  69. #[serde(rename = "results")]
  70. pub results: Vec<SearchResponseItem>,
  71. }
  72. #[derive(Deserialize, Serialize, Clone, Debug)]
  73. pub struct SearchResponseItem {
  74. #[serde(rename = "robot")]
  75. pub robot: RobotInfo,
  76. #[serde(rename = "prices")]
  77. pub prices: Vec<RobotPrice>,
  78. #[serde(rename = "purchased")]
  79. pub purchased: bool,
  80. }
  81. #[derive(Deserialize, Serialize, Clone, Debug)]
  82. pub struct RobotInfo {
  83. #[serde(rename = "id")]
  84. pub id: String, // GUID
  85. #[serde(rename = "name")]
  86. pub name: String,
  87. #[serde(rename = "creatorId")]
  88. pub creator_id: String, // GUID
  89. #[serde(rename = "creatorName")]
  90. pub creator_name: String,
  91. #[serde(rename = "created")]
  92. pub created: String, // date
  93. #[serde(rename = "image")]
  94. pub image: String, // base64??
  95. #[serde(rename = "baseCpu")]
  96. pub base_cpu: isize,
  97. #[serde(rename = "weaponCpu")]
  98. pub weapon_cpu: isize,
  99. #[serde(rename = "cosmeticCpu")]
  100. pub cosmetic_cpu: isize,
  101. #[serde(rename = "clusterCount")]
  102. pub cluster_count: isize,
  103. #[serde(rename = "blockCounts")]
  104. pub block_counts: std::collections::HashMap<usize, usize>,
  105. #[serde(rename = "materialsUsed")]
  106. pub materials_used: std::collections::HashSet<isize>,
  107. #[serde(rename = "minimumOffsetX")]
  108. pub minimum_offset_x: f64,
  109. #[serde(rename = "minimumOffsetY")]
  110. pub minimum_offset_y: f64,
  111. #[serde(rename = "minimumOffsetZ")]
  112. pub minimum_offset_z: f64,
  113. #[serde(rename = "maximumOffsetX")]
  114. pub maximum_offset_x: f64,
  115. #[serde(rename = "maximumOffsetY")]
  116. pub maximum_offset_y: f64,
  117. #[serde(rename = "maximumOffsetZ")]
  118. pub maximum_offset_z: f64,
  119. }
  120. impl std::string::ToString for RobotInfo {
  121. fn to_string(&self) -> String {
  122. format!("{} ({}) by {} ({})", &self.name, &self.id, &self.creator_name, &self.creator_id)
  123. }
  124. }
  125. #[derive(Deserialize, Serialize, Clone, Debug)]
  126. pub struct RobotPrice {
  127. #[serde(rename = "currency")]
  128. pub currency: isize,
  129. #[serde(rename = "amount")]
  130. pub amount: isize,
  131. }
  132. // create robot endpoint
  133. #[derive(Deserialize, Serialize, Clone, Debug)]
  134. pub struct CreateRobotPayload {
  135. #[serde(rename = "name")]
  136. pub name: String,
  137. #[serde(rename = "data")]
  138. pub data: String, // base64
  139. #[serde(rename = "image")]
  140. pub image: String, // base64??
  141. #[serde(rename = "baseCpu")]
  142. pub base_cpu: isize,
  143. #[serde(rename = "weaponCpu")]
  144. pub weapon_cpu: isize,
  145. #[serde(rename = "cosmeticCpu")]
  146. pub cosmetic_cpu: isize,
  147. #[serde(rename = "clusterCount")]
  148. pub cluster_count: isize,
  149. #[serde(rename = "blockCounts")]
  150. pub block_counts: std::collections::HashMap<usize, usize>,
  151. #[serde(rename = "materialsUsed")]
  152. pub materials_used: std::collections::HashSet<isize>,
  153. #[serde(rename = "minimumOffsetX")]
  154. pub minimum_offset_x: f64,
  155. #[serde(rename = "minimumOffsetY")]
  156. pub minimum_offset_y: f64,
  157. #[serde(rename = "minimumOffsetZ")]
  158. pub minimum_offset_z: f64,
  159. #[serde(rename = "maximumOffsetX")]
  160. pub maximum_offset_x: f64,
  161. #[serde(rename = "maximumOffsetY")]
  162. pub maximum_offset_y: f64,
  163. #[serde(rename = "maximumOffsetZ")]
  164. pub maximum_offset_z: f64,
  165. }
  166. #[derive(Deserialize, Serialize, Clone, Debug)]
  167. pub struct CreateRobotResponse {
  168. #[serde(rename = "header")]
  169. pub header: RobotInfo,
  170. }
  171. // factory info endpoint
  172. // (no payload -- this is a GET request)
  173. #[derive(Deserialize, Serialize, Clone, Debug)]
  174. pub struct FactoryInfoResponse {
  175. #[serde(rename = "robotCount")]
  176. pub robot_count: isize,
  177. #[serde(rename = "robotLimit")]
  178. pub robot_limit: isize,
  179. #[serde(rename = "publishedRobotCount")]
  180. pub published_robot_count: isize,
  181. #[serde(rename = "publishedRobotLimit")]
  182. pub published_robot_limit: isize,
  183. }
  184. // publish robot endpoint
  185. #[derive(Deserialize, Serialize, Clone, Debug)]
  186. pub struct PublishRobotPayload {
  187. #[serde(rename = "name")]
  188. pub name: String,
  189. #[serde(rename = "description")]
  190. pub description: String,
  191. #[serde(rename = "techPoints")]
  192. pub techpoints: isize,
  193. #[serde(rename = "bloxCoin")]
  194. pub bloxcoin: isize,
  195. }
  196. #[derive(Deserialize, Serialize, Clone, Debug)]
  197. pub struct PublishRobotResponse {
  198. #[serde(rename = "header")]
  199. pub header: RobotInfo,
  200. #[serde(rename = "data")]
  201. pub data: String, // base64
  202. }
  203. // get my robots endpoint
  204. // (no payload -- this is a GET request)
  205. #[derive(Deserialize, Serialize, Clone, Debug)]
  206. pub struct MyRobotsResponse {
  207. #[serde(rename = "vehicles")]
  208. pub vehicles: Vec<RobotInfo>,
  209. }
  210. // get robot endpoint
  211. // (no payload -- this is a GET request)
  212. #[derive(Deserialize, Serialize, Clone, Debug)]
  213. pub struct GetRobotResponse {
  214. #[serde(rename = "header")]
  215. pub header: RobotInfo,
  216. #[serde(rename = "data")]
  217. pub data: String, // base64
  218. #[serde(rename = "description")]
  219. pub description: String,
  220. #[serde(rename = "created")]
  221. pub created: String, // date
  222. }