obscura_client/
config_map.rs1use 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}