fastly_api/apis/
kv_store_api.rs

1/*
2 * Fastly API
3 *
4 * Via the Fastly API you can perform any of the operations that are possible within the management console,  including creating services, domains, and backends, configuring rules or uploading your own application code, as well as account operations such as user administration and billing reports. The API is organized into collections of endpoints that allow manipulation of objects related to Fastly services and accounts. For the most accurate and up-to-date API reference content, visit our [Developer Hub](https://www.fastly.com/documentation/reference/api/) 
5 *
6 */
7
8
9use reqwest;
10
11use crate::apis::ResponseContent;
12use super::{Error, configuration};
13
14/// struct for passing parameters to the method [`kv_store_create`]
15#[derive(Clone, Debug, Default)]
16pub struct KvStoreCreateParams {
17    pub location: Option<String>,
18    pub kv_store_request_create: Option<crate::models::KvStoreRequestCreate>
19}
20
21/// struct for passing parameters to the method [`kv_store_delete`]
22#[derive(Clone, Debug, Default)]
23pub struct KvStoreDeleteParams {
24    pub store_id: String
25}
26
27/// struct for passing parameters to the method [`kv_store_get`]
28#[derive(Clone, Debug, Default)]
29pub struct KvStoreGetParams {
30    pub store_id: String
31}
32
33/// struct for passing parameters to the method [`kv_store_list`]
34#[derive(Clone, Debug, Default)]
35pub struct KvStoreListParams {
36    pub cursor: Option<String>,
37    pub limit: Option<i32>,
38    /// Returns a one-element array containing the details for the named KV store.
39    pub name: Option<String>
40}
41
42
43/// struct for typed errors of method [`kv_store_create`]
44#[derive(Debug, Clone, Serialize, Deserialize)]
45#[serde(untagged)]
46pub enum KvStoreCreateError {
47    Status400(),
48    UnknownValue(serde_json::Value),
49}
50
51/// struct for typed errors of method [`kv_store_delete`]
52#[derive(Debug, Clone, Serialize, Deserialize)]
53#[serde(untagged)]
54pub enum KvStoreDeleteError {
55    Status404(),
56    Status409(),
57    UnknownValue(serde_json::Value),
58}
59
60/// struct for typed errors of method [`kv_store_get`]
61#[derive(Debug, Clone, Serialize, Deserialize)]
62#[serde(untagged)]
63pub enum KvStoreGetError {
64    Status404(),
65    UnknownValue(serde_json::Value),
66}
67
68/// struct for typed errors of method [`kv_store_list`]
69#[derive(Debug, Clone, Serialize, Deserialize)]
70#[serde(untagged)]
71pub enum KvStoreListError {
72    UnknownValue(serde_json::Value),
73}
74
75
76/// Create a KV store.
77pub async fn kv_store_create(configuration: &mut configuration::Configuration, params: KvStoreCreateParams) -> Result<crate::models::KvStoreDetails, Error<KvStoreCreateError>> {
78    let local_var_configuration = configuration;
79
80    // unbox the parameters
81    let location = params.location;
82    let kv_store_request_create = params.kv_store_request_create;
83
84
85    let local_var_client = &local_var_configuration.client;
86
87    let local_var_uri_str = format!("{}/resources/stores/kv", local_var_configuration.base_path);
88    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
89
90    if let Some(ref local_var_str) = location {
91        local_var_req_builder = local_var_req_builder.query(&[("location", &local_var_str.to_string())]);
92    }
93    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
94        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
95    }
96    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
97        let local_var_key = local_var_apikey.key.clone();
98        let local_var_value = match local_var_apikey.prefix {
99            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
100            None => local_var_key,
101        };
102        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
103    };
104    local_var_req_builder = local_var_req_builder.json(&kv_store_request_create);
105
106    let local_var_req = local_var_req_builder.build()?;
107    let local_var_resp = local_var_client.execute(local_var_req).await?;
108
109    if "POST" != "GET" && "POST" != "HEAD" {
110      let headers = local_var_resp.headers();
111      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
112          Some(v) => v.to_str().unwrap().parse().unwrap(),
113          None => configuration::DEFAULT_RATELIMIT,
114      };
115      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
116          Some(v) => v.to_str().unwrap().parse().unwrap(),
117          None => 0,
118      };
119    }
120
121    let local_var_status = local_var_resp.status();
122    let local_var_content = local_var_resp.text().await?;
123
124    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
125        serde_json::from_str(&local_var_content).map_err(Error::from)
126    } else {
127        let local_var_entity: Option<KvStoreCreateError> = serde_json::from_str(&local_var_content).ok();
128        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
129        Err(Error::ResponseError(local_var_error))
130    }
131}
132
133/// A KV store must be empty before it can be deleted. Attempting to delete a KV store that contains items will result in a response with a `409` status code.
134pub async fn kv_store_delete(configuration: &mut configuration::Configuration, params: KvStoreDeleteParams) -> Result<(), Error<KvStoreDeleteError>> {
135    let local_var_configuration = configuration;
136
137    // unbox the parameters
138    let store_id = params.store_id;
139
140
141    let local_var_client = &local_var_configuration.client;
142
143    let local_var_uri_str = format!("{}/resources/stores/kv/{store_id}", local_var_configuration.base_path, store_id=crate::apis::urlencode(store_id));
144    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
145
146    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
147        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
148    }
149    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
150        let local_var_key = local_var_apikey.key.clone();
151        let local_var_value = match local_var_apikey.prefix {
152            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
153            None => local_var_key,
154        };
155        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
156    };
157
158    let local_var_req = local_var_req_builder.build()?;
159    let local_var_resp = local_var_client.execute(local_var_req).await?;
160
161    if "DELETE" != "GET" && "DELETE" != "HEAD" {
162      let headers = local_var_resp.headers();
163      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
164          Some(v) => v.to_str().unwrap().parse().unwrap(),
165          None => configuration::DEFAULT_RATELIMIT,
166      };
167      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
168          Some(v) => v.to_str().unwrap().parse().unwrap(),
169          None => 0,
170      };
171    }
172
173    let local_var_status = local_var_resp.status();
174    let local_var_content = local_var_resp.text().await?;
175
176    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
177        Ok(())
178    } else {
179        let local_var_entity: Option<KvStoreDeleteError> = serde_json::from_str(&local_var_content).ok();
180        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
181        Err(Error::ResponseError(local_var_error))
182    }
183}
184
185/// Get details of a KV store.
186pub async fn kv_store_get(configuration: &mut configuration::Configuration, params: KvStoreGetParams) -> Result<crate::models::KvStoreDetails, Error<KvStoreGetError>> {
187    let local_var_configuration = configuration;
188
189    // unbox the parameters
190    let store_id = params.store_id;
191
192
193    let local_var_client = &local_var_configuration.client;
194
195    let local_var_uri_str = format!("{}/resources/stores/kv/{store_id}", local_var_configuration.base_path, store_id=crate::apis::urlencode(store_id));
196    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
197
198    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
199        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
200    }
201    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
202        let local_var_key = local_var_apikey.key.clone();
203        let local_var_value = match local_var_apikey.prefix {
204            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
205            None => local_var_key,
206        };
207        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
208    };
209
210    let local_var_req = local_var_req_builder.build()?;
211    let local_var_resp = local_var_client.execute(local_var_req).await?;
212
213    if "GET" != "GET" && "GET" != "HEAD" {
214      let headers = local_var_resp.headers();
215      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
216          Some(v) => v.to_str().unwrap().parse().unwrap(),
217          None => configuration::DEFAULT_RATELIMIT,
218      };
219      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
220          Some(v) => v.to_str().unwrap().parse().unwrap(),
221          None => 0,
222      };
223    }
224
225    let local_var_status = local_var_resp.status();
226    let local_var_content = local_var_resp.text().await?;
227
228    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
229        serde_json::from_str(&local_var_content).map_err(Error::from)
230    } else {
231        let local_var_entity: Option<KvStoreGetError> = serde_json::from_str(&local_var_content).ok();
232        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
233        Err(Error::ResponseError(local_var_error))
234    }
235}
236
237/// List all KV stores.
238pub async fn kv_store_list(configuration: &mut configuration::Configuration, params: KvStoreListParams) -> Result<crate::models::InlineResponse2005, Error<KvStoreListError>> {
239    let local_var_configuration = configuration;
240
241    // unbox the parameters
242    let cursor = params.cursor;
243    let limit = params.limit;
244    let name = params.name;
245
246
247    let local_var_client = &local_var_configuration.client;
248
249    let local_var_uri_str = format!("{}/resources/stores/kv", local_var_configuration.base_path);
250    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
251
252    if let Some(ref local_var_str) = cursor {
253        local_var_req_builder = local_var_req_builder.query(&[("cursor", &local_var_str.to_string())]);
254    }
255    if let Some(ref local_var_str) = limit {
256        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
257    }
258    if let Some(ref local_var_str) = name {
259        local_var_req_builder = local_var_req_builder.query(&[("name", &local_var_str.to_string())]);
260    }
261    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
262        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
263    }
264    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
265        let local_var_key = local_var_apikey.key.clone();
266        let local_var_value = match local_var_apikey.prefix {
267            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
268            None => local_var_key,
269        };
270        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
271    };
272
273    let local_var_req = local_var_req_builder.build()?;
274    let local_var_resp = local_var_client.execute(local_var_req).await?;
275
276    if "GET" != "GET" && "GET" != "HEAD" {
277      let headers = local_var_resp.headers();
278      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
279          Some(v) => v.to_str().unwrap().parse().unwrap(),
280          None => configuration::DEFAULT_RATELIMIT,
281      };
282      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
283          Some(v) => v.to_str().unwrap().parse().unwrap(),
284          None => 0,
285      };
286    }
287
288    let local_var_status = local_var_resp.status();
289    let local_var_content = local_var_resp.text().await?;
290
291    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
292        serde_json::from_str(&local_var_content).map_err(Error::from)
293    } else {
294        let local_var_entity: Option<KvStoreListError> = serde_json::from_str(&local_var_content).ok();
295        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
296        Err(Error::ResponseError(local_var_error))
297    }
298}
299