1use std::sync::Arc;
12
13use async_trait::async_trait;
14#[cfg(feature = "mockall")]
15use mockall::automock;
16use reqwest;
17use serde::{Deserialize, Serialize, de::Error as _};
18
19use super::{Error, configuration};
20use crate::{
21 apis::{ContentType, ResponseContent},
22 models,
23};
24
25#[cfg_attr(feature = "mockall", automock)]
26#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
27#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
28pub trait PushApi: Send + Sync {
29 async fn add_organization<'a>(
31 &self,
32 push_update_request_model: Option<models::PushUpdateRequestModel>,
33 ) -> Result<(), Error<AddOrganizationError>>;
34
35 async fn delete<'a>(
37 &self,
38 push_device_request_model: Option<models::PushDeviceRequestModel>,
39 ) -> Result<(), Error<DeleteError>>;
40
41 async fn delete_organization<'a>(
43 &self,
44 push_update_request_model: Option<models::PushUpdateRequestModel>,
45 ) -> Result<(), Error<DeleteOrganizationError>>;
46
47 async fn register<'a>(
49 &self,
50 push_registration_request_model: Option<models::PushRegistrationRequestModel>,
51 ) -> Result<(), Error<RegisterError>>;
52
53 async fn send<'a>(
55 &self,
56 json_element_push_send_request_model: Option<models::JsonElementPushSendRequestModel>,
57 ) -> Result<(), Error<SendError>>;
58}
59
60pub struct PushApiClient {
61 configuration: Arc<configuration::Configuration>,
62}
63
64impl PushApiClient {
65 pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
66 Self { configuration }
67 }
68}
69
70#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
71#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
72impl PushApi for PushApiClient {
73 async fn add_organization<'a>(
74 &self,
75 push_update_request_model: Option<models::PushUpdateRequestModel>,
76 ) -> Result<(), Error<AddOrganizationError>> {
77 let local_var_configuration = &self.configuration;
78
79 let local_var_client = &local_var_configuration.client;
80
81 let local_var_uri_str = format!(
82 "{}/push/add-organization",
83 local_var_configuration.base_path
84 );
85 let mut local_var_req_builder =
86 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
87
88 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
89 local_var_req_builder = local_var_req_builder
90 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
91 }
92 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
93 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
94 };
95 local_var_req_builder = local_var_req_builder.json(&push_update_request_model);
96
97 let local_var_req = local_var_req_builder.build()?;
98 let local_var_resp = local_var_client.execute(local_var_req).await?;
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 Ok(())
105 } else {
106 let local_var_entity: Option<AddOrganizationError> =
107 serde_json::from_str(&local_var_content).ok();
108 let local_var_error = ResponseContent {
109 status: local_var_status,
110 content: local_var_content,
111 entity: local_var_entity,
112 };
113 Err(Error::ResponseError(local_var_error))
114 }
115 }
116
117 async fn delete<'a>(
118 &self,
119 push_device_request_model: Option<models::PushDeviceRequestModel>,
120 ) -> Result<(), Error<DeleteError>> {
121 let local_var_configuration = &self.configuration;
122
123 let local_var_client = &local_var_configuration.client;
124
125 let local_var_uri_str = format!("{}/push/delete", local_var_configuration.base_path);
126 let mut local_var_req_builder =
127 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
128
129 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
130 local_var_req_builder = local_var_req_builder
131 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
132 }
133 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
134 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
135 };
136 local_var_req_builder = local_var_req_builder.json(&push_device_request_model);
137
138 let local_var_req = local_var_req_builder.build()?;
139 let local_var_resp = local_var_client.execute(local_var_req).await?;
140
141 let local_var_status = local_var_resp.status();
142 let local_var_content = local_var_resp.text().await?;
143
144 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
145 Ok(())
146 } else {
147 let local_var_entity: Option<DeleteError> =
148 serde_json::from_str(&local_var_content).ok();
149 let local_var_error = ResponseContent {
150 status: local_var_status,
151 content: local_var_content,
152 entity: local_var_entity,
153 };
154 Err(Error::ResponseError(local_var_error))
155 }
156 }
157
158 async fn delete_organization<'a>(
159 &self,
160 push_update_request_model: Option<models::PushUpdateRequestModel>,
161 ) -> Result<(), Error<DeleteOrganizationError>> {
162 let local_var_configuration = &self.configuration;
163
164 let local_var_client = &local_var_configuration.client;
165
166 let local_var_uri_str = format!(
167 "{}/push/delete-organization",
168 local_var_configuration.base_path
169 );
170 let mut local_var_req_builder =
171 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
172
173 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
174 local_var_req_builder = local_var_req_builder
175 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
176 }
177 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
178 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
179 };
180 local_var_req_builder = local_var_req_builder.json(&push_update_request_model);
181
182 let local_var_req = local_var_req_builder.build()?;
183 let local_var_resp = local_var_client.execute(local_var_req).await?;
184
185 let local_var_status = local_var_resp.status();
186 let local_var_content = local_var_resp.text().await?;
187
188 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
189 Ok(())
190 } else {
191 let local_var_entity: Option<DeleteOrganizationError> =
192 serde_json::from_str(&local_var_content).ok();
193 let local_var_error = ResponseContent {
194 status: local_var_status,
195 content: local_var_content,
196 entity: local_var_entity,
197 };
198 Err(Error::ResponseError(local_var_error))
199 }
200 }
201
202 async fn register<'a>(
203 &self,
204 push_registration_request_model: Option<models::PushRegistrationRequestModel>,
205 ) -> Result<(), Error<RegisterError>> {
206 let local_var_configuration = &self.configuration;
207
208 let local_var_client = &local_var_configuration.client;
209
210 let local_var_uri_str = format!("{}/push/register", local_var_configuration.base_path);
211 let mut local_var_req_builder =
212 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
213
214 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
215 local_var_req_builder = local_var_req_builder
216 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
217 }
218 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
219 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
220 };
221 local_var_req_builder = local_var_req_builder.json(&push_registration_request_model);
222
223 let local_var_req = local_var_req_builder.build()?;
224 let local_var_resp = local_var_client.execute(local_var_req).await?;
225
226 let local_var_status = local_var_resp.status();
227 let local_var_content = local_var_resp.text().await?;
228
229 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
230 Ok(())
231 } else {
232 let local_var_entity: Option<RegisterError> =
233 serde_json::from_str(&local_var_content).ok();
234 let local_var_error = ResponseContent {
235 status: local_var_status,
236 content: local_var_content,
237 entity: local_var_entity,
238 };
239 Err(Error::ResponseError(local_var_error))
240 }
241 }
242
243 async fn send<'a>(
244 &self,
245 json_element_push_send_request_model: Option<models::JsonElementPushSendRequestModel>,
246 ) -> Result<(), Error<SendError>> {
247 let local_var_configuration = &self.configuration;
248
249 let local_var_client = &local_var_configuration.client;
250
251 let local_var_uri_str = format!("{}/push/send", local_var_configuration.base_path);
252 let mut local_var_req_builder =
253 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
254
255 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
256 local_var_req_builder = local_var_req_builder
257 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
258 }
259 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
260 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
261 };
262 local_var_req_builder = local_var_req_builder.json(&json_element_push_send_request_model);
263
264 let local_var_req = local_var_req_builder.build()?;
265 let local_var_resp = local_var_client.execute(local_var_req).await?;
266
267 let local_var_status = local_var_resp.status();
268 let local_var_content = local_var_resp.text().await?;
269
270 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
271 Ok(())
272 } else {
273 let local_var_entity: Option<SendError> = serde_json::from_str(&local_var_content).ok();
274 let local_var_error = ResponseContent {
275 status: local_var_status,
276 content: local_var_content,
277 entity: local_var_entity,
278 };
279 Err(Error::ResponseError(local_var_error))
280 }
281 }
282}
283
284#[derive(Debug, Clone, Serialize, Deserialize)]
286#[serde(untagged)]
287pub enum AddOrganizationError {
288 UnknownValue(serde_json::Value),
289}
290#[derive(Debug, Clone, Serialize, Deserialize)]
292#[serde(untagged)]
293pub enum DeleteError {
294 UnknownValue(serde_json::Value),
295}
296#[derive(Debug, Clone, Serialize, Deserialize)]
298#[serde(untagged)]
299pub enum DeleteOrganizationError {
300 UnknownValue(serde_json::Value),
301}
302#[derive(Debug, Clone, Serialize, Deserialize)]
304#[serde(untagged)]
305pub enum RegisterError {
306 UnknownValue(serde_json::Value),
307}
308#[derive(Debug, Clone, Serialize, Deserialize)]
310#[serde(untagged)]
311pub enum SendError {
312 UnknownValue(serde_json::Value),
313}