meta_secret_core/node/
server_api.rs1use reqwest::{Client, Error, Response};
2
3use crate::models::{FindSharesRequest, JoinRequest, MetaPasswordRequest, PasswordRecoveryRequest, SecretDistributionDocData, UserSignature};
4use crate::sdk::api::{GenericMessage, MembershipResponse, MetaPasswordsResponse, PasswordRecoveryClaimsResponse, RegistrationResponse, UserSharesResponse, VaultInfoResponse};
5
6const API_URL: &str = "https://api.meta-secret.org";
7
8pub async fn register(user_sig: &UserSignature) -> Result<RegistrationResponse, Error> {
10 let client = get_reqwest_client();
11 let response = client
12 .post(format!("{}/register", API_URL))
13 .header("Access-Control-Allow-Origin", API_URL)
14 .json(user_sig)
15 .send()
16 .await?;
17
18 let json: RegistrationResponse = response.json().await?;
20 Ok(json)
21}
22
23pub async fn get_vault(user_sig: &UserSignature) -> Result<VaultInfoResponse, Error> {
24 let client = get_reqwest_client();
25 let response = client
26 .post(format!("{}/getVault", API_URL))
27 .header("Access-Control-Allow-Origin", API_URL)
28 .json(user_sig)
29 .send()
30 .await?;
31
32 let json: VaultInfoResponse = response.json().await?;
34 Ok(json)
35}
36
37pub async fn decline(join_request: &JoinRequest) -> Result<MembershipResponse, Error> {
38 let client = get_reqwest_client();
39 let response = client
40 .post(format!("{}/decline", API_URL))
41 .header("Access-Control-Allow-Origin", API_URL)
42 .json(join_request)
43 .send()
44 .await?;
45
46 let json: MembershipResponse = response.json().await?;
48 Ok(json)
49}
50
51pub async fn accept(request: &JoinRequest) -> Result<MembershipResponse, Error> {
52 let client = get_reqwest_client();
53 let response = client
54 .post(format!("{}/accept", API_URL))
55 .header("Access-Control-Allow-Origin", API_URL)
56 .json(request)
57 .send()
58 .await?;
59
60 let json: MembershipResponse = response.json().await?;
62 Ok(json)
63}
64
65pub async fn claim_for_password_recovery(request: &PasswordRecoveryRequest) -> Result<PasswordRecoveryRequest, Error> {
66 let client = get_reqwest_client();
67 let response = client
68 .post(format!("{}/claimForPasswordRecovery", API_URL))
69 .header("Access-Control-Allow-Origin", API_URL)
70 .json(request)
71 .send()
72 .await?;
73
74 let json: PasswordRecoveryRequest = response.json().await?;
76 Ok(json)
77}
78
79pub async fn find_password_recovery_claims(user_sig: &UserSignature) -> Result<PasswordRecoveryClaimsResponse, Error> {
80 let client = get_reqwest_client();
81 let response = client
82 .post(format!("{}/findPasswordRecoveryClaims", API_URL))
83 .header("Access-Control-Allow-Origin", API_URL)
84 .json(user_sig)
85 .send()
86 .await?;
87
88 let json: PasswordRecoveryClaimsResponse = response.json().await?;
90 Ok(json)
91}
92
93pub async fn distribute(secret_doc: &SecretDistributionDocData) -> Result<GenericMessage<String>, Error> {
94 let client = get_reqwest_client();
95 let response = client
96 .post(format!("{}/distribute", API_URL))
97 .header("Access-Control-Allow-Origin", API_URL)
98 .json(secret_doc)
99 .send()
100 .await?;
101
102 let json: GenericMessage<String> = response.json().await?;
104 Ok(json)
105}
106
107pub async fn find_shares(request: &FindSharesRequest) -> Result<UserSharesResponse, Error> {
108 let client = get_reqwest_client();
109 let response: Response = client
110 .post(format!("{}/findShares", API_URL))
111 .header("Access-Control-Allow-Origin", API_URL)
112 .json(request)
113 .send()
114 .await?;
115
116 let json: UserSharesResponse = response.json().await?;
118 Ok(json)
119}
120
121pub async fn get_meta_passwords(user_sig: &UserSignature) -> Result<MetaPasswordsResponse, Error> {
122 let client = get_reqwest_client();
123 let response: Response = client
124 .post(format!("{}/getMetaPasswords", API_URL))
125 .header("Access-Control-Allow-Origin", API_URL)
126 .json(user_sig)
127 .send()
128 .await?;
129
130 let json: MetaPasswordsResponse = response.json().await?;
132 Ok(json)
133}
134
135pub async fn delete_meta_password(meta_pass_request: &MetaPasswordRequest) -> Result<MetaPasswordsResponse, Error> {
136 let client = get_reqwest_client();
137 let response: Response = client
138 .post(format!("{}/deleteMetaPassword", API_URL))
139 .header("Access-Control-Allow-Origin", API_URL)
140 .json(meta_pass_request)
141 .send()
142 .await?;
143
144 let json: MetaPasswordsResponse = response.json().await?;
146 Ok(json)
147}
148
149pub async fn join_meta_cloud(user_sig: &UserSignature) -> Result<RegistrationResponse, Error> {
151 let client = get_reqwest_client();
152 let response: Response = client
153 .post(format!("{}/joinMetaCloud", API_URL))
154 .header("Access-Control-Allow-Origin", API_URL)
155 .json(user_sig)
156 .send()
157 .await?;
158
159 let json: RegistrationResponse = response.json().await?;
161 Ok(json)
162}
163
164
165fn get_reqwest_client() -> Client {
166 Client::new()
167}