meta_secret_core/node/
server_api.rs

1use 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
8/// Register new vault
9pub 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    // Read the response body as a JSON object
19    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    // Read the response body as a JSON object
33    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    // Read the response body as a JSON object
47    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    // Read the response body as a JSON object
61    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    // Read the response body as a JSON object
75    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    // Read the response body as a JSON object
89    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    // Read the response body as a JSON object
103    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    // Read the response body as a JSON object
117    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    // Read the response body as a JSON object
131    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    // Read the response body as a JSON object
145    let json: MetaPasswordsResponse = response.json().await?;
146    Ok(json)
147}
148
149///cloud
150pub 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    // Read the response body as a JSON object
160    let json: RegistrationResponse = response.json().await?;
161    Ok(json)
162}
163
164
165fn get_reqwest_client() -> Client {
166    Client::new()
167}