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.

133 lines
4.0KB

  1. use serde::{Deserialize, Serialize};
  2. // search endpoint
  3. #[derive(Deserialize, Serialize, Clone)]
  4. pub struct SearchPayload {
  5. #[serde(rename = "text")]
  6. pub text: Option<String>,
  7. #[serde(rename = "baseCpuMinimum")]
  8. pub base_minimum_cpu: Option<isize>,
  9. #[serde(rename = "baseCpuMaximum")]
  10. pub base_maximum_cpu: Option<isize>,
  11. #[serde(rename = "weaponCpuMinimum")]
  12. pub weapon_minimum_cpu: Option<isize>,
  13. #[serde(rename = "weaponCpuMaximum")]
  14. pub weapon_maximum_cpu: Option<isize>,
  15. #[serde(rename = "cosmeticCpuMinimum")]
  16. pub cosmetic_minimum_cpu: Option<isize>,
  17. #[serde(rename = "cosmeticCpuMaximum")]
  18. pub cosmetic_maximum_cpu: Option<isize>,
  19. #[serde(rename = "clusterMinimum")]
  20. pub cluster_minimum: Option<isize>,
  21. #[serde(rename = "clusterMaximum")]
  22. pub cluster_maximum: Option<isize>,
  23. #[serde(rename = "dateMinimum")]
  24. pub date_minimum: Option<String>,
  25. #[serde(rename = "dateMaximum")]
  26. pub date_maximum: Option<String>,
  27. #[serde(rename = "creatorId")]
  28. pub creator_id: Option<String>, // GUID
  29. #[serde(rename = "page")]
  30. pub page: Option<isize>,
  31. #[serde(rename = "count")]
  32. pub count: Option<isize>,
  33. #[serde(rename = "sortBy")]
  34. pub sort_by: String,
  35. #[serde(rename = "orderBy")]
  36. pub order_by: String,
  37. }
  38. impl Default for SearchPayload {
  39. fn default() -> Self {
  40. Self {
  41. text: None,
  42. base_minimum_cpu: None,
  43. base_maximum_cpu: None,
  44. weapon_minimum_cpu: None,
  45. weapon_maximum_cpu: None,
  46. cosmetic_minimum_cpu: None,
  47. cosmetic_maximum_cpu: None,
  48. cluster_minimum: None,
  49. cluster_maximum: None,
  50. date_minimum: None,
  51. date_maximum: None,
  52. creator_id: None,
  53. page: None,
  54. count: None,
  55. sort_by: "default".to_owned(),
  56. order_by: "ascending".to_owned(),
  57. }
  58. }
  59. }
  60. #[derive(Deserialize, Serialize, Clone, Debug)]
  61. pub struct SearchResponse {
  62. #[serde(rename = "results")]
  63. pub results: Vec<SearchResponseItem>,
  64. }
  65. #[derive(Deserialize, Serialize, Clone, Debug)]
  66. pub struct SearchResponseItem {
  67. #[serde(rename = "robot")]
  68. pub robot: RobotInfo,
  69. #[serde(rename = "prices")]
  70. pub prices: Vec<RobotPrice>,
  71. #[serde(rename = "purchased")]
  72. pub purchased: bool,
  73. }
  74. #[derive(Deserialize, Serialize, Clone, Debug)]
  75. pub struct RobotInfo {
  76. #[serde(rename = "id")]
  77. pub id: String, // GUID
  78. #[serde(rename = "name")]
  79. pub name: String,
  80. #[serde(rename = "creatorId")]
  81. pub creator_id: String, // GUID
  82. #[serde(rename = "creatorName")]
  83. pub creator_name: String,
  84. #[serde(rename = "created")]
  85. pub created: String, // date
  86. #[serde(rename = "image")]
  87. pub image: String, // base64??
  88. #[serde(rename = "baseCpu")]
  89. pub base_cpu: isize,
  90. #[serde(rename = "weaponCpu")]
  91. pub weapon_cpu: isize,
  92. #[serde(rename = "cosmeticCpu")]
  93. pub cosmetic_cpu: isize,
  94. #[serde(rename = "clusterCount")]
  95. pub cluster_count: isize,
  96. #[serde(rename = "blockCounts")]
  97. pub block_counts: std::collections::HashMap<usize, usize>,
  98. #[serde(rename = "materialsUsed")]
  99. pub materials_used: std::collections::HashSet<isize>,
  100. #[serde(rename = "minimumOffsetX")]
  101. pub minimum_offset_x: f64,
  102. #[serde(rename = "minimumOffsetY")]
  103. pub minimum_offset_y: f64,
  104. #[serde(rename = "minimumOffsetZ")]
  105. pub minimum_offset_z: f64,
  106. #[serde(rename = "maximumOffsetX")]
  107. pub maximum_offset_x: f64,
  108. #[serde(rename = "maximumOffsetY")]
  109. pub maximum_offset_y: f64,
  110. #[serde(rename = "maximumOffsetZ")]
  111. pub maximum_offset_z: f64,
  112. }
  113. impl std::string::ToString for RobotInfo {
  114. fn to_string(&self) -> String {
  115. format!("{} by {} ({})", &self.name, &self.creator_name, &self.id)
  116. }
  117. }
  118. #[derive(Deserialize, Serialize, Clone, Debug)]
  119. pub struct RobotPrice {
  120. #[serde(rename = "currency")]
  121. pub currency: isize,
  122. #[serde(rename = "amount")]
  123. pub amount: isize,
  124. }