/claims/src/claim_schema/defaults.rs

https://github.com/Internet-of-People/mercury-rust · Rust · 87 lines · 82 code · 5 blank · 0 comment · 0 complexity · dac1e44f6be8db404089897b19ec5258 MD5 · raw file

  1. use serde_json::json;
  2. use super::SchemaVersion;
  3. pub fn get() -> Vec<SchemaVersion> {
  4. vec![age_over(), email_address(), full_name()]
  5. }
  6. fn age_over() -> SchemaVersion {
  7. SchemaVersion::new(
  8. "McL9746fWtE9EXV5",
  9. "iop",
  10. "age-over",
  11. 0,
  12. json![{
  13. "type": "object",
  14. "properties": {
  15. "age": {
  16. "type": "number",
  17. "min": 0,
  18. "max": 255,
  19. "required": true,
  20. "description": "Eg.: 42. Pick a number between 0 and 255",
  21. },
  22. },
  23. }],
  24. )
  25. }
  26. fn email_address() -> SchemaVersion {
  27. SchemaVersion::new(
  28. "McL9746fWtE9EXVb",
  29. "iop",
  30. "email-address",
  31. 0,
  32. json![{
  33. "type": "object",
  34. "properties": {
  35. "email": {
  36. "type": "string",
  37. "regex": r#"/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/"#,
  38. "required": true,
  39. "description": "Eg.: john.doe@ecorp-usa.com",
  40. }
  41. }
  42. }],
  43. )
  44. }
  45. fn full_name() -> SchemaVersion {
  46. SchemaVersion::new_with_order(
  47. "McL9746fWtE9EXVa",
  48. "iop",
  49. "full-name",
  50. 0,
  51. json![{
  52. "type": "object",
  53. "properties": {
  54. "title": {
  55. "type": "string",
  56. "maxLength": 50,
  57. "required": false,
  58. "description": "eg.: Mr.",
  59. },
  60. "givenName": {
  61. "type": "string",
  62. "maxLength": 50,
  63. "required": true,
  64. "description": "eg.: John",
  65. },
  66. "middleName": {
  67. "type": "string",
  68. "maxLength": 50,
  69. "required": false,
  70. "description": "eg.: Canary",
  71. },
  72. "familyName": {
  73. "type": "string",
  74. "maxLength": 50,
  75. "required": true,
  76. "description": "eg.: Doe",
  77. },
  78. },
  79. }],
  80. vec!["title", "givenName", "middleName", "familyName"],
  81. )
  82. }