members_config.rs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. use serde::Deserialize;
  2. use serde_json::Result;
  3. use primitives::crypto::{AccountId32, Ss58Codec};
  4. #[derive(Deserialize)]
  5. struct Member {
  6. /// SS58 Encoded public key
  7. address: String,
  8. handle: String,
  9. avatar_uri: String,
  10. about: String,
  11. }
  12. // fn test_load_members() -> Result<Vec<Member>> {
  13. // let data = r#"
  14. // [{
  15. // "address": "5Gn9n7SDJ7VgHqHQWYzkSA4vX6DCmS5TFWdHxikTXp9b4L32",
  16. // "handle": "mokhtar",
  17. // "avatar_uri": "http://mokhtar.net/avatar.png",
  18. // "about": "Mokhtar"
  19. // }]"#;
  20. // serde_json::from_str(data)
  21. // }
  22. fn parse_members_json() -> Result<Vec<Member>> {
  23. let data = include_str!("../res/acropolis_members.json");
  24. serde_json::from_str(data)
  25. }
  26. pub fn decode_address(address: String) -> AccountId32 {
  27. AccountId32::from_ss58check(address.as_ref()).expect("failed to decode account id")
  28. }
  29. pub fn initial_members() -> Vec<(AccountId32, String, String, String)> {
  30. let members = parse_members_json().expect("failed parsing members data");
  31. members
  32. .into_iter()
  33. .map(|member| {
  34. (
  35. decode_address(member.address),
  36. member.handle,
  37. member.avatar_uri,
  38. member.about,
  39. )
  40. })
  41. .collect()
  42. }