1use reqwest;
10
11use crate::apis::ResponseContent;
12use super::{Error, configuration};
13
14#[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#[derive(Clone, Debug, Default)]
23pub struct KvStoreDeleteParams {
24 pub store_id: String
25}
26
27#[derive(Clone, Debug, Default)]
29pub struct KvStoreGetParams {
30 pub store_id: String
31}
32
33#[derive(Clone, Debug, Default)]
35pub struct KvStoreListParams {
36 pub cursor: Option<String>,
37 pub limit: Option<i32>,
38 pub name: Option<String>
40}
41
42
43#[derive(Debug, Clone, Serialize, Deserialize)]
45#[serde(untagged)]
46pub enum KvStoreCreateError {
47 Status400(),
48 UnknownValue(serde_json::Value),
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize)]
53#[serde(untagged)]
54pub enum KvStoreDeleteError {
55 Status404(),
56 Status409(),
57 UnknownValue(serde_json::Value),
58}
59
60#[derive(Debug, Clone, Serialize, Deserialize)]
62#[serde(untagged)]
63pub enum KvStoreGetError {
64 Status404(),
65 UnknownValue(serde_json::Value),
66}
67
68#[derive(Debug, Clone, Serialize, Deserialize)]
70#[serde(untagged)]
71pub enum KvStoreListError {
72 UnknownValue(serde_json::Value),
73}
74
75
76pub 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 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
133pub async fn kv_store_delete(configuration: &mut configuration::Configuration, params: KvStoreDeleteParams) -> Result<(), Error<KvStoreDeleteError>> {
135 let local_var_configuration = configuration;
136
137 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
185pub 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 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
237pub 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 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