fastly_api/apis/
invitations_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_invitation`]
15#[derive(Clone, Debug, Default)]
16pub struct CreateInvitationParams {
17    pub invitation: Option<crate::models::Invitation>
18}
19
20/// struct for passing parameters to the method [`delete_invitation`]
21#[derive(Clone, Debug, Default)]
22pub struct DeleteInvitationParams {
23    /// Alphanumeric string identifying an invitation.
24    pub invitation_id: String
25}
26
27/// struct for passing parameters to the method [`list_invitations`]
28#[derive(Clone, Debug, Default)]
29pub struct ListInvitationsParams {
30    /// Current page.
31    pub page_number: Option<i32>,
32    /// Number of records per page.
33    pub page_size: Option<i32>
34}
35
36
37/// struct for typed errors of method [`create_invitation`]
38#[derive(Debug, Clone, Serialize, Deserialize)]
39#[serde(untagged)]
40pub enum CreateInvitationError {
41    UnknownValue(serde_json::Value),
42}
43
44/// struct for typed errors of method [`delete_invitation`]
45#[derive(Debug, Clone, Serialize, Deserialize)]
46#[serde(untagged)]
47pub enum DeleteInvitationError {
48    UnknownValue(serde_json::Value),
49}
50
51/// struct for typed errors of method [`list_invitations`]
52#[derive(Debug, Clone, Serialize, Deserialize)]
53#[serde(untagged)]
54pub enum ListInvitationsError {
55    UnknownValue(serde_json::Value),
56}
57
58
59/// Create an invitation.
60pub async fn create_invitation(configuration: &mut configuration::Configuration, params: CreateInvitationParams) -> Result<crate::models::InvitationResponse, Error<CreateInvitationError>> {
61    let local_var_configuration = configuration;
62
63    // unbox the parameters
64    let invitation = params.invitation;
65
66
67    let local_var_client = &local_var_configuration.client;
68
69    let local_var_uri_str = format!("{}/invitations", local_var_configuration.base_path);
70    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
71
72    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
73        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
74    }
75    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
76        let local_var_key = local_var_apikey.key.clone();
77        let local_var_value = match local_var_apikey.prefix {
78            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
79            None => local_var_key,
80        };
81        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
82    };
83    local_var_req_builder = local_var_req_builder.json(&invitation);
84
85    let local_var_req = local_var_req_builder.build()?;
86    let local_var_resp = local_var_client.execute(local_var_req).await?;
87
88    if "POST" != "GET" && "POST" != "HEAD" {
89      let headers = local_var_resp.headers();
90      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
91          Some(v) => v.to_str().unwrap().parse().unwrap(),
92          None => configuration::DEFAULT_RATELIMIT,
93      };
94      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
95          Some(v) => v.to_str().unwrap().parse().unwrap(),
96          None => 0,
97      };
98    }
99
100    let local_var_status = local_var_resp.status();
101    let local_var_content = local_var_resp.text().await?;
102
103    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
104        serde_json::from_str(&local_var_content).map_err(Error::from)
105    } else {
106        let local_var_entity: Option<CreateInvitationError> = serde_json::from_str(&local_var_content).ok();
107        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
108        Err(Error::ResponseError(local_var_error))
109    }
110}
111
112/// Delete an invitation.
113pub async fn delete_invitation(configuration: &mut configuration::Configuration, params: DeleteInvitationParams) -> Result<(), Error<DeleteInvitationError>> {
114    let local_var_configuration = configuration;
115
116    // unbox the parameters
117    let invitation_id = params.invitation_id;
118
119
120    let local_var_client = &local_var_configuration.client;
121
122    let local_var_uri_str = format!("{}/invitations/{invitation_id}", local_var_configuration.base_path, invitation_id=crate::apis::urlencode(invitation_id));
123    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
124
125    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
126        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
127    }
128    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
129        let local_var_key = local_var_apikey.key.clone();
130        let local_var_value = match local_var_apikey.prefix {
131            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
132            None => local_var_key,
133        };
134        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
135    };
136
137    let local_var_req = local_var_req_builder.build()?;
138    let local_var_resp = local_var_client.execute(local_var_req).await?;
139
140    if "DELETE" != "GET" && "DELETE" != "HEAD" {
141      let headers = local_var_resp.headers();
142      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
143          Some(v) => v.to_str().unwrap().parse().unwrap(),
144          None => configuration::DEFAULT_RATELIMIT,
145      };
146      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
147          Some(v) => v.to_str().unwrap().parse().unwrap(),
148          None => 0,
149      };
150    }
151
152    let local_var_status = local_var_resp.status();
153    let local_var_content = local_var_resp.text().await?;
154
155    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
156        Ok(())
157    } else {
158        let local_var_entity: Option<DeleteInvitationError> = serde_json::from_str(&local_var_content).ok();
159        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
160        Err(Error::ResponseError(local_var_error))
161    }
162}
163
164/// List all invitations.
165pub async fn list_invitations(configuration: &mut configuration::Configuration, params: ListInvitationsParams) -> Result<crate::models::InvitationsResponse, Error<ListInvitationsError>> {
166    let local_var_configuration = configuration;
167
168    // unbox the parameters
169    let page_number = params.page_number;
170    let page_size = params.page_size;
171
172
173    let local_var_client = &local_var_configuration.client;
174
175    let local_var_uri_str = format!("{}/invitations", local_var_configuration.base_path);
176    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
177
178    if let Some(ref local_var_str) = page_number {
179        local_var_req_builder = local_var_req_builder.query(&[("page[number]", &local_var_str.to_string())]);
180    }
181    if let Some(ref local_var_str) = page_size {
182        local_var_req_builder = local_var_req_builder.query(&[("page[size]", &local_var_str.to_string())]);
183    }
184    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
185        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
186    }
187    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
188        let local_var_key = local_var_apikey.key.clone();
189        let local_var_value = match local_var_apikey.prefix {
190            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
191            None => local_var_key,
192        };
193        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
194    };
195
196    let local_var_req = local_var_req_builder.build()?;
197    let local_var_resp = local_var_client.execute(local_var_req).await?;
198
199    if "GET" != "GET" && "GET" != "HEAD" {
200      let headers = local_var_resp.headers();
201      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
202          Some(v) => v.to_str().unwrap().parse().unwrap(),
203          None => configuration::DEFAULT_RATELIMIT,
204      };
205      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
206          Some(v) => v.to_str().unwrap().parse().unwrap(),
207          None => 0,
208      };
209    }
210
211    let local_var_status = local_var_resp.status();
212    let local_var_content = local_var_resp.text().await?;
213
214    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
215        serde_json::from_str(&local_var_content).map_err(Error::from)
216    } else {
217        let local_var_entity: Option<ListInvitationsError> = serde_json::from_str(&local_var_content).ok();
218        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
219        Err(Error::ResponseError(local_var_error))
220    }
221}
222