Skip to main content

ordinary_api/
lib.rs

1#![cfg_attr(docsrs, feature(doc_cfg))]
2#![doc = include_str!("../README.md")]
3#![warn(clippy::all, clippy::pedantic)]
4#![allow(
5    clippy::needless_for_each,
6    clippy::missing_errors_doc,
7    clippy::cast_precision_loss,
8    clippy::match_wildcard_for_single_variants,
9    clippy::similar_names
10)]
11
12/// Client components for facilitating interaction with [`Admin`]
13#[cfg(feature = "client")]
14pub mod client;
15
16/// Server components for setting up an [`Admin`]
17#[cfg(feature = "server")]
18pub mod server;
19
20fn permissions_field(idx: u8) -> ordinary_types::Field {
21    ordinary_types::Field {
22        idx,
23        name: "permissions".into(),
24        kind: ordinary_types::Kind::List {
25            kind: Box::new(ordinary_types::Kind::Enum {
26                name: "permissions".into(),
27                opts: vec![
28                    ordinary_types::EnumOpt {
29                        idx: 0,
30                        name: "admin".into(),
31                    },
32                    ordinary_types::EnumOpt {
33                        idx: 1,
34                        name: "read".into(),
35                    },
36                    ordinary_types::EnumOpt {
37                        idx: 2,
38                        name: "write".into(),
39                    },
40                    ordinary_types::EnumOpt {
41                        idx: 3,
42                        name: "update".into(),
43                    },
44                    ordinary_types::EnumOpt {
45                        idx: 4,
46                        name: "upload".into(),
47                    },
48                    ordinary_types::EnumOpt {
49                        idx: 5,
50                        name: "install".into(),
51                    },
52                    ordinary_types::EnumOpt {
53                        idx: 6,
54                        name: "deploy".into(),
55                    },
56                    ordinary_types::EnumOpt {
57                        idx: 7,
58                        name: "bridge".into(),
59                    },
60                    ordinary_types::EnumOpt {
61                        idx: 8,
62                        name: "kill".into(),
63                    },
64                    ordinary_types::EnumOpt {
65                        idx: 9,
66                        name: "erase".into(),
67                    },
68                ],
69            }),
70        },
71        ..Default::default()
72    }
73}
74
75#[must_use]
76pub fn api_invite_claims() -> Vec<ordinary_types::Field> {
77    vec![
78        ordinary_types::Field {
79            idx: 1,
80            name: "account".into(),
81            kind: ordinary_types::Kind::String,
82            ..Default::default()
83        },
84        ordinary_types::Field {
85            idx: 2,
86            name: "domain".into(),
87            kind: ordinary_types::Kind::String,
88            ..Default::default()
89        },
90        permissions_field(3),
91    ]
92}
93
94#[must_use]
95pub fn api_account_claims() -> Vec<ordinary_types::Field> {
96    vec![
97        ordinary_types::Field {
98            idx: 1,
99            name: "domain".into(),
100            kind: ordinary_types::Kind::String,
101            ..Default::default()
102        },
103        permissions_field(2),
104    ]
105}