fastly_api/apis/
response_object_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 [`create_response_object`]
15#[derive(Clone, Debug, Default)]
16pub struct CreateResponseObjectParams {
17    /// Alphanumeric string identifying the service.
18    pub service_id: String,
19    /// Integer identifying a service version.
20    pub version_id: i32,
21    pub create_response_object_request: Option<crate::models::CreateResponseObjectRequest>
22}
23
24/// struct for passing parameters to the method [`delete_response_object`]
25#[derive(Clone, Debug, Default)]
26pub struct DeleteResponseObjectParams {
27    /// Alphanumeric string identifying the service.
28    pub service_id: String,
29    /// Integer identifying a service version.
30    pub version_id: i32,
31    /// Name for the request settings.
32    pub response_object_name: String
33}
34
35/// struct for passing parameters to the method [`get_response_object`]
36#[derive(Clone, Debug, Default)]
37pub struct GetResponseObjectParams {
38    /// Alphanumeric string identifying the service.
39    pub service_id: String,
40    /// Integer identifying a service version.
41    pub version_id: i32,
42    /// Name for the request settings.
43    pub response_object_name: String
44}
45
46/// struct for passing parameters to the method [`list_response_objects`]
47#[derive(Clone, Debug, Default)]
48pub struct ListResponseObjectsParams {
49    /// Alphanumeric string identifying the service.
50    pub service_id: String,
51    /// Integer identifying a service version.
52    pub version_id: i32
53}
54
55/// struct for passing parameters to the method [`update_response_object`]
56#[derive(Clone, Debug, Default)]
57pub struct UpdateResponseObjectParams {
58    /// Alphanumeric string identifying the service.
59    pub service_id: String,
60    /// Integer identifying a service version.
61    pub version_id: i32,
62    /// Name for the request settings.
63    pub response_object_name: String,
64    pub create_response_object_request: Option<crate::models::CreateResponseObjectRequest>
65}
66
67
68/// struct for typed errors of method [`create_response_object`]
69#[derive(Debug, Clone, Serialize, Deserialize)]
70#[serde(untagged)]
71pub enum CreateResponseObjectError {
72    Status400(),
73    Status404(),
74    UnknownValue(serde_json::Value),
75}
76
77/// struct for typed errors of method [`delete_response_object`]
78#[derive(Debug, Clone, Serialize, Deserialize)]
79#[serde(untagged)]
80pub enum DeleteResponseObjectError {
81    UnknownValue(serde_json::Value),
82}
83
84/// struct for typed errors of method [`get_response_object`]
85#[derive(Debug, Clone, Serialize, Deserialize)]
86#[serde(untagged)]
87pub enum GetResponseObjectError {
88    UnknownValue(serde_json::Value),
89}
90
91/// struct for typed errors of method [`list_response_objects`]
92#[derive(Debug, Clone, Serialize, Deserialize)]
93#[serde(untagged)]
94pub enum ListResponseObjectsError {
95    UnknownValue(serde_json::Value),
96}
97
98/// struct for typed errors of method [`update_response_object`]
99#[derive(Debug, Clone, Serialize, Deserialize)]
100#[serde(untagged)]
101pub enum UpdateResponseObjectError {
102    Status400(),
103    Status404(),
104    UnknownValue(serde_json::Value),
105}
106
107
108/// Creates a new Response Object.
109pub async fn create_response_object(configuration: &mut configuration::Configuration, params: CreateResponseObjectParams) -> Result<crate::models::ResponseObjectResponse, Error<CreateResponseObjectError>> {
110    let local_var_configuration = configuration;
111
112    // unbox the parameters
113    let service_id = params.service_id;
114    let version_id = params.version_id;
115    let create_response_object_request = params.create_response_object_request;
116
117
118    let local_var_client = &local_var_configuration.client;
119
120    let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/response_object", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id);
121    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
122
123    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
124        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
125    }
126    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
127        let local_var_key = local_var_apikey.key.clone();
128        let local_var_value = match local_var_apikey.prefix {
129            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
130            None => local_var_key,
131        };
132        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
133    };
134    local_var_req_builder = local_var_req_builder.json(&create_response_object_request);
135
136    let local_var_req = local_var_req_builder.build()?;
137    let local_var_resp = local_var_client.execute(local_var_req).await?;
138
139    if "POST" != "GET" && "POST" != "HEAD" {
140      let headers = local_var_resp.headers();
141      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
142          Some(v) => v.to_str().unwrap().parse().unwrap(),
143          None => configuration::DEFAULT_RATELIMIT,
144      };
145      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
146          Some(v) => v.to_str().unwrap().parse().unwrap(),
147          None => 0,
148      };
149    }
150
151    let local_var_status = local_var_resp.status();
152    let local_var_content = local_var_resp.text().await?;
153
154    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
155        serde_json::from_str(&local_var_content).map_err(Error::from)
156    } else {
157        let local_var_entity: Option<CreateResponseObjectError> = serde_json::from_str(&local_var_content).ok();
158        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
159        Err(Error::ResponseError(local_var_error))
160    }
161}
162
163/// Deletes the specified Response Object.
164pub async fn delete_response_object(configuration: &mut configuration::Configuration, params: DeleteResponseObjectParams) -> Result<crate::models::InlineResponse200, Error<DeleteResponseObjectError>> {
165    let local_var_configuration = configuration;
166
167    // unbox the parameters
168    let service_id = params.service_id;
169    let version_id = params.version_id;
170    let response_object_name = params.response_object_name;
171
172
173    let local_var_client = &local_var_configuration.client;
174
175    let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/response_object/{response_object_name}", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id, response_object_name=crate::apis::urlencode(response_object_name));
176    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
177
178    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
179        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
180    }
181    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
182        let local_var_key = local_var_apikey.key.clone();
183        let local_var_value = match local_var_apikey.prefix {
184            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
185            None => local_var_key,
186        };
187        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
188    };
189
190    let local_var_req = local_var_req_builder.build()?;
191    let local_var_resp = local_var_client.execute(local_var_req).await?;
192
193    if "DELETE" != "GET" && "DELETE" != "HEAD" {
194      let headers = local_var_resp.headers();
195      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
196          Some(v) => v.to_str().unwrap().parse().unwrap(),
197          None => configuration::DEFAULT_RATELIMIT,
198      };
199      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
200          Some(v) => v.to_str().unwrap().parse().unwrap(),
201          None => 0,
202      };
203    }
204
205    let local_var_status = local_var_resp.status();
206    let local_var_content = local_var_resp.text().await?;
207
208    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
209        serde_json::from_str(&local_var_content).map_err(Error::from)
210    } else {
211        let local_var_entity: Option<DeleteResponseObjectError> = serde_json::from_str(&local_var_content).ok();
212        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
213        Err(Error::ResponseError(local_var_error))
214    }
215}
216
217/// Gets the specified Response Object.
218pub async fn get_response_object(configuration: &mut configuration::Configuration, params: GetResponseObjectParams) -> Result<crate::models::ResponseObjectResponse, Error<GetResponseObjectError>> {
219    let local_var_configuration = configuration;
220
221    // unbox the parameters
222    let service_id = params.service_id;
223    let version_id = params.version_id;
224    let response_object_name = params.response_object_name;
225
226
227    let local_var_client = &local_var_configuration.client;
228
229    let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/response_object/{response_object_name}", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id, response_object_name=crate::apis::urlencode(response_object_name));
230    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
231
232    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
233        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
234    }
235    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
236        let local_var_key = local_var_apikey.key.clone();
237        let local_var_value = match local_var_apikey.prefix {
238            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
239            None => local_var_key,
240        };
241        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
242    };
243
244    let local_var_req = local_var_req_builder.build()?;
245    let local_var_resp = local_var_client.execute(local_var_req).await?;
246
247    if "GET" != "GET" && "GET" != "HEAD" {
248      let headers = local_var_resp.headers();
249      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
250          Some(v) => v.to_str().unwrap().parse().unwrap(),
251          None => configuration::DEFAULT_RATELIMIT,
252      };
253      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
254          Some(v) => v.to_str().unwrap().parse().unwrap(),
255          None => 0,
256      };
257    }
258
259    let local_var_status = local_var_resp.status();
260    let local_var_content = local_var_resp.text().await?;
261
262    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
263        serde_json::from_str(&local_var_content).map_err(Error::from)
264    } else {
265        let local_var_entity: Option<GetResponseObjectError> = serde_json::from_str(&local_var_content).ok();
266        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
267        Err(Error::ResponseError(local_var_error))
268    }
269}
270
271/// Returns all Response Objects for the specified service and version.
272pub async fn list_response_objects(configuration: &mut configuration::Configuration, params: ListResponseObjectsParams) -> Result<Vec<crate::models::ResponseObjectResponse>, Error<ListResponseObjectsError>> {
273    let local_var_configuration = configuration;
274
275    // unbox the parameters
276    let service_id = params.service_id;
277    let version_id = params.version_id;
278
279
280    let local_var_client = &local_var_configuration.client;
281
282    let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/response_object", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id);
283    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
284
285    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
286        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
287    }
288    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
289        let local_var_key = local_var_apikey.key.clone();
290        let local_var_value = match local_var_apikey.prefix {
291            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
292            None => local_var_key,
293        };
294        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
295    };
296
297    let local_var_req = local_var_req_builder.build()?;
298    let local_var_resp = local_var_client.execute(local_var_req).await?;
299
300    if "GET" != "GET" && "GET" != "HEAD" {
301      let headers = local_var_resp.headers();
302      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
303          Some(v) => v.to_str().unwrap().parse().unwrap(),
304          None => configuration::DEFAULT_RATELIMIT,
305      };
306      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
307          Some(v) => v.to_str().unwrap().parse().unwrap(),
308          None => 0,
309      };
310    }
311
312    let local_var_status = local_var_resp.status();
313    let local_var_content = local_var_resp.text().await?;
314
315    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
316        serde_json::from_str(&local_var_content).map_err(Error::from)
317    } else {
318        let local_var_entity: Option<ListResponseObjectsError> = serde_json::from_str(&local_var_content).ok();
319        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
320        Err(Error::ResponseError(local_var_error))
321    }
322}
323
324/// Updates the specified Response Object.
325pub async fn update_response_object(configuration: &mut configuration::Configuration, params: UpdateResponseObjectParams) -> Result<crate::models::ResponseObjectResponse, Error<UpdateResponseObjectError>> {
326    let local_var_configuration = configuration;
327
328    // unbox the parameters
329    let service_id = params.service_id;
330    let version_id = params.version_id;
331    let response_object_name = params.response_object_name;
332    let create_response_object_request = params.create_response_object_request;
333
334
335    let local_var_client = &local_var_configuration.client;
336
337    let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/response_object/{response_object_name}", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id, response_object_name=crate::apis::urlencode(response_object_name));
338    let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
339
340    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
341        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
342    }
343    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
344        let local_var_key = local_var_apikey.key.clone();
345        let local_var_value = match local_var_apikey.prefix {
346            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
347            None => local_var_key,
348        };
349        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
350    };
351    local_var_req_builder = local_var_req_builder.json(&create_response_object_request);
352
353    let local_var_req = local_var_req_builder.build()?;
354    let local_var_resp = local_var_client.execute(local_var_req).await?;
355
356    if "PUT" != "GET" && "PUT" != "HEAD" {
357      let headers = local_var_resp.headers();
358      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
359          Some(v) => v.to_str().unwrap().parse().unwrap(),
360          None => configuration::DEFAULT_RATELIMIT,
361      };
362      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
363          Some(v) => v.to_str().unwrap().parse().unwrap(),
364          None => 0,
365      };
366    }
367
368    let local_var_status = local_var_resp.status();
369    let local_var_content = local_var_resp.text().await?;
370
371    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
372        serde_json::from_str(&local_var_content).map_err(Error::from)
373    } else {
374        let local_var_entity: Option<UpdateResponseObjectError> = serde_json::from_str(&local_var_content).ok();
375        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
376        Err(Error::ResponseError(local_var_error))
377    }
378}
379