obscura_client/
config_map.rs

1use super::client::Client;
2
3pub struct ConfigMap {
4    client: Client,
5}
6
7impl ConfigMap {
8    pub fn new(client: Client) -> ConfigMap {
9        ConfigMap { client }
10    }
11
12    pub fn read<K>(&self, key: K) -> Result<Option<Vec<u8>>, String>
13    where K: Into<String>,
14    {
15        let mut key = key.into();
16
17        if key.starts_with("/") {
18            key.remove(0);
19        }
20
21        let url = self.client.get_url(
22            format!("config-map/{}", key)
23        );
24
25        let res = self.client.http.get(url)
26            .header("Authorization", format!("Bearer {}", self.client.get_token()))
27            .send();
28
29        match res {
30            Ok(res) if res.status() == 200 => {
31                Ok(
32                    Some(
33                        res.bytes().unwrap().to_vec()
34                    )
35                )
36            }
37            Ok(res) if res.status() == 404 => {
38                Ok(None)
39            }
40            Ok(res) => {
41                Err(res.text().unwrap())
42
43            }
44            Err(e) => {
45                Err(e.to_string())
46            }
47        }
48    }
49
50    pub fn read_with_prefix<K>(&self, key: K) -> Result<Option<Vec<u8>>, String>
51    where K: Into<String>,
52    {
53        let mut key = key.into();
54
55        if key.starts_with("/") {
56            key.remove(0);
57        }
58
59        let url = self.client.get_url(
60            format!("config-map/{}/prefix", key)
61        );
62
63        let res = self.client.http.get(url)
64            .header("Authorization", format!("Bearer {}", self.client.get_token()))
65            .send();
66
67        match res {
68            Ok(res) if res.status() == 200 => {
69                Ok(
70                    Some(
71                        res.bytes().unwrap().to_vec()
72                    )
73                )
74            }
75            Ok(res) if res.status() == 404 => {
76                Ok(None)
77            }
78            Ok(res) => {
79                Err(res.text().unwrap())
80
81            }
82            Err(e) => {
83                Err(e.to_string())
84            }
85        }
86    }
87}