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.

146 lines
4.9KB

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