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.

204 lines
6.6KB

  1. use serde::{Deserialize, Serialize};
  2. // list endpoint
  3. #[derive(Deserialize, Serialize, Clone)]
  4. pub(crate) struct ListPayload {
  5. #[serde(rename = "page")]
  6. pub page: isize,
  7. #[serde(rename = "pageSize")]
  8. pub page_size: isize,
  9. #[serde(rename = "order")]
  10. pub order: isize,
  11. #[serde(rename = "playerFilter")]
  12. pub player_filter: bool,
  13. #[serde(rename = "movementFilter")]
  14. pub movement_filter: String, // csv int enums as str
  15. #[serde(rename = "movementCategoryFilter")]
  16. pub movement_category_filter: String, // csv int enums as str
  17. #[serde(rename = "weaponFilter")]
  18. pub weapon_filter: String, // csv int enums as str
  19. #[serde(rename = "weaponCategoryFilter")]
  20. pub weapon_category_filter: String, // csv int enums as str
  21. #[serde(rename = "minimumCpu")]
  22. pub minimum_cpu: isize,
  23. #[serde(rename = "maximumCpu")]
  24. pub maximum_cpu: isize,
  25. #[serde(rename = "textFilter")]
  26. pub text_filter: String,
  27. #[serde(rename = "textSearchField")]
  28. pub text_search_field: isize, // ???
  29. #[serde(rename = "buyable")]
  30. pub buyable: bool,
  31. #[serde(rename = "prependFeaturedRobot")]
  32. pub prepend_featured_robot: bool,
  33. #[serde(rename = "featuredOnly")]
  34. pub featured_only: bool,
  35. #[serde(rename = "defaultPage")]
  36. pub default_page: bool,
  37. }
  38. impl ListPayload {
  39. pub fn default() -> ListPayload {
  40. ListPayload {
  41. page: 1,
  42. page_size: 100,
  43. order: 0,
  44. player_filter: false,
  45. movement_filter: "100000,200000,300000,400000,500000,600000,700000,800000,900000,1000000,1100000,1200000".to_string(),
  46. movement_category_filter: "100000,200000,300000,400000,500000,600000,700000,800000,900000,1000000,1100000,1200000".to_string(),
  47. weapon_filter: "10000000,20000000,25000000,30000000,40000000,50000000,60000000,65000000,70100000,75000000".to_string(),
  48. weapon_category_filter: "10000000,20000000,25000000,30000000,40000000,50000000,60000000,65000000,70100000,75000000".to_string(),
  49. minimum_cpu: -1,
  50. maximum_cpu: -1,
  51. text_filter: "".to_string(),
  52. text_search_field: 0,
  53. buyable: true,
  54. prepend_featured_robot: false,
  55. featured_only: false,
  56. default_page: true,
  57. }
  58. }
  59. pub fn empty() -> ListPayload {
  60. ListPayload {
  61. page: 1,
  62. page_size: 100,
  63. order: 0,
  64. player_filter: false,
  65. movement_filter: "".to_string(),
  66. movement_category_filter: "".to_string(),
  67. weapon_filter: "".to_string(),
  68. weapon_category_filter: "".to_string(),
  69. minimum_cpu: -1,
  70. maximum_cpu: -1,
  71. text_filter: "".to_string(),
  72. text_search_field: 0,
  73. buyable: true,
  74. prepend_featured_robot: false,
  75. featured_only: false,
  76. default_page: false,
  77. }
  78. }
  79. }
  80. #[derive(Deserialize, Serialize, Clone)]
  81. pub struct FactoryInfo<T> {
  82. #[serde(rename = "response")]
  83. pub response: T,
  84. #[serde(rename = "statusCode")]
  85. pub status_code: usize,
  86. }
  87. #[derive(Deserialize, Serialize, Clone)]
  88. pub struct RoboShopItemsInfo {
  89. #[serde(rename = "roboShopItems")]
  90. pub roboshop_items: Vec<FactoryRobotListInfo>,
  91. }
  92. #[derive(Deserialize, Serialize, Clone)]
  93. pub struct FactoryRobotListInfo {
  94. #[serde(rename = "itemId")]
  95. pub item_id: usize,
  96. #[serde(rename = "itemName")]
  97. pub item_name: String,
  98. #[serde(rename = "itemDescription")]
  99. pub item_description: String,
  100. #[serde(rename = "thumbnail")]
  101. pub thumbnail: String, // url
  102. #[serde(rename = "addedBy")]
  103. pub added_by: String,
  104. #[serde(rename = "addedByDisplayName")]
  105. pub added_by_display_name: String,
  106. #[serde(rename = "addedDate")]
  107. pub added_date: String, // ISO date
  108. #[serde(rename = "expiryDate")]
  109. pub expiry_date: String, // ISO date
  110. #[serde(rename = "cpu")]
  111. pub cpu: usize,
  112. #[serde(rename = "totalRobotRanking")]
  113. pub total_robot_ranking: usize,
  114. #[serde(rename = "rentCount")]
  115. pub rent_count: usize,
  116. #[serde(rename = "buyCount")]
  117. pub buy_count: usize,
  118. #[serde(rename = "buyable")]
  119. pub buyable: bool,
  120. #[serde(rename = "removedDate")]
  121. pub removed_date: Option<String>,
  122. #[serde(rename = "banDate")]
  123. pub ban_date: Option<String>,
  124. #[serde(rename = "featured")]
  125. pub featured: bool,
  126. #[serde(rename = "bannerMessage")]
  127. pub banner_message: Option<String>,
  128. #[serde(rename = "combatRating")]
  129. pub combat_rating: f32,
  130. #[serde(rename = "cosmeticRating")]
  131. pub cosmetic_rating: f32,
  132. #[serde(rename = "cubeAmounts")]
  133. pub cube_amounts: String, // JSON as str
  134. }
  135. impl std::string::ToString for FactoryRobotListInfo {
  136. fn to_string(&self) -> String {
  137. format!("{} by {} ({})", &self.item_name, &self.added_by_display_name, &self.item_id)
  138. }
  139. }
  140. // get/<item_id> endpoint
  141. #[derive(Deserialize, Serialize, Clone)]
  142. pub struct FactoryRobotGetInfo {
  143. #[serde(rename = "id")]
  144. pub item_id: usize,
  145. #[serde(rename = "name")]
  146. pub item_name: String,
  147. #[serde(rename = "description")]
  148. pub item_description: String,
  149. #[serde(rename = "thumbnail")]
  150. pub thumbnail: String, // url
  151. #[serde(rename = "addedBy")]
  152. pub added_by: String,
  153. #[serde(rename = "addedByDisplayName")]
  154. pub added_by_display_name: String,
  155. #[serde(rename = "addedDate")]
  156. pub added_date: String, // ISO date
  157. #[serde(rename = "expiryDate")]
  158. pub expiry_date: String, // ISO date
  159. #[serde(rename = "cpu")]
  160. pub cpu: usize,
  161. #[serde(rename = "totalRobotRanking")]
  162. pub total_robot_ranking: usize,
  163. #[serde(rename = "rentCount")]
  164. pub rent_count: usize,
  165. #[serde(rename = "buyCount")]
  166. pub buy_count: usize,
  167. #[serde(rename = "buyable")]
  168. pub buyable: bool,
  169. #[serde(rename = "removedDate")]
  170. pub removed_date: Option<String>,
  171. #[serde(rename = "banDate")]
  172. pub ban_date: Option<String>,
  173. #[serde(rename = "featured")]
  174. pub featured: bool,
  175. #[serde(rename = "bannerMessage")]
  176. pub banner_message: Option<String>,
  177. #[serde(rename = "combatRating")]
  178. pub combat_rating: f32,
  179. #[serde(rename = "cosmeticRating")]
  180. pub cosmetic_rating: f32,
  181. #[serde(rename = "cubeData")]
  182. pub cube_data: String,
  183. #[serde(rename = "colourData")]
  184. pub colour_data: String,
  185. #[serde(rename = "cubeAmounts")]
  186. pub cube_amounts: String, // JSON as str
  187. }
  188. impl std::string::ToString for FactoryRobotGetInfo {
  189. fn to_string(&self) -> String {
  190. format!("{} by {} ({})", &self.item_name, &self.added_by_display_name, &self.item_id)
  191. }
  192. }