jelastic_rs/
lib.rs

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(&params)
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}