profiles.rs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. use serde::{Deserialize, Serialize};
  2. /// Define the `profiles.yaml` schema
  3. #[derive(Default, Debug, Clone, Deserialize, Serialize)]
  4. pub struct ProfilesConfig {
  5. /// current profile's name
  6. pub current: Option<usize>,
  7. /// profile list
  8. pub items: Option<Vec<ProfileItem>>,
  9. }
  10. #[derive(Default, Debug, Clone, Deserialize, Serialize)]
  11. pub struct ProfileItem {
  12. /// profile name
  13. pub name: Option<String>,
  14. /// profile file
  15. pub file: Option<String>,
  16. /// current mode
  17. pub mode: Option<String>,
  18. /// source url
  19. pub url: Option<String>,
  20. /// selected infomation
  21. pub selected: Option<Vec<ProfileSelected>>,
  22. /// user info
  23. pub extra: Option<ProfileExtra>,
  24. /// updated time
  25. pub updated: Option<usize>,
  26. }
  27. #[derive(Default, Debug, Clone, Deserialize, Serialize)]
  28. pub struct ProfileSelected {
  29. pub name: Option<String>,
  30. pub now: Option<String>,
  31. }
  32. #[derive(Default, Debug, Clone, Copy, Deserialize, Serialize)]
  33. pub struct ProfileExtra {
  34. pub upload: usize,
  35. pub download: usize,
  36. pub total: usize,
  37. pub expire: usize,
  38. }
  39. #[derive(Default, Debug, Clone, Deserialize, Serialize)]
  40. /// the result from url
  41. pub struct ProfileResponse {
  42. pub name: String,
  43. pub file: String,
  44. pub data: String,
  45. pub extra: ProfileExtra,
  46. }