1use serde_json::json;
2
3const APP_ID: &str = "1dd8d191d38fff45e62564fcf67fdcd6";
4
5pub struct Api {
6 pub host: String,
7 pub token: String,
8}
9
10impl Api {
11 async fn request(
12 &self,
13 endpoint: &str,
14 content: Option<serde_json::Value>,
15 ) -> Result<serde_json::Value, reqwest::Error> {
16 let client = reqwest::Client::new();
17 let params = json!(content);
18 let auth_params = json!({
19 "session": &self.token,
20 "appid": APP_ID
21 });
22 let response = client
23 .post(String::from("https://") + &self.host + endpoint)
24 .query(¶ms)
25 .query(&auth_params)
26 .send()
27 .await?;
28
29 let body: serde_json::Value = response.json().await?;
30 Ok(body)
31 }
32
33 pub async fn get_envs(&self) -> Result<serde_json::Value, reqwest::Error> {
34 Api::request(&self, "/1.0/environment/control/rest/getenvs", None).await
35 }
36
37 pub async fn get_env_info(&self, env_name: &str) -> Result<serde_json::Value, reqwest::Error> {
38 let params = json!({ "envName": env_name });
39 Api::request(
40 &self,
41 "/1.0/environment/control/rest/getenvinfo",
42 Some(params),
43 )
44 .await
45 }
46
47 pub async fn get_logs(
48 &self,
49 env_name: &str,
50 node_id: u32,
51 ) -> Result<serde_json::Value, reqwest::Error> {
52 let params = json!({ "envName": env_name, "nodeId": node_id });
53 Api::request(&self, "/1.0/environment/control/rest/getlogs", Some(params)).await
54 }
55
56 pub async fn start_env(&self, env_name: &str) -> Result<serde_json::Value, reqwest::Error> {
57 let params = json!({ "envName": env_name });
58 Api::request(
59 &self,
60 "/1.0/environment/control/rest/startenv",
61 Some(params),
62 )
63 .await
64 }
65
66 pub async fn stop_env(&self, env_name: &str) -> Result<serde_json::Value, reqwest::Error> {
67 let params = json!({ "envName": env_name });
68 Api::request(&self, "/1.0/environment/control/rest/stopenv", Some(params)).await
69 }
70}