hab_rs_api_client/apis/
sitemaps_api.rs

1/*
2 * openHAB REST API
3 *
4 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5 *
6 * The version of the OpenAPI document: 8
7 *
8 * Generated by: https://openapi-generator.tech
9 */
10
11use super::{Error, configuration};
12use crate::apis::ContentType;
13use crate::{apis::ResponseContent, models};
14use async_trait::async_trait;
15#[cfg(feature = "mockall")]
16use mockall::automock;
17use reqwest;
18use serde::{Deserialize, Serialize, de::Error as _};
19use std::sync::Arc;
20
21#[cfg_attr(feature = "mockall", automock)]
22#[async_trait]
23pub trait SitemapsApi: Send + Sync {
24    /// POST /sitemaps/events/subscribe
25    ///
26    ///
27    async fn create_sitemap_event_subscription(
28        &self,
29    ) -> Result<(), Error<CreateSitemapEventSubscriptionError>>;
30
31    /// GET /sitemaps/{sitemapname}
32    ///
33    ///
34    async fn get_sitemap_by_name<
35        'sitemapname,
36        'accept_language,
37        'r_type,
38        'jsoncallback,
39        'include_hidden,
40    >(
41        &self,
42        sitemapname: &'sitemapname str,
43        accept_language: Option<&'accept_language str>,
44        r#type: Option<&'r_type str>,
45        jsoncallback: Option<&'jsoncallback str>,
46        include_hidden: Option<bool>,
47    ) -> Result<models::SitemapDto, Error<GetSitemapByNameError>>;
48
49    /// GET /sitemaps/events/{subscriptionid}/*
50    ///
51    ///
52    async fn get_sitemap_events<'subscriptionid, 'sitemap>(
53        &self,
54        subscriptionid: &'subscriptionid str,
55        sitemap: Option<&'sitemap str>,
56    ) -> Result<(), Error<GetSitemapEventsError>>;
57
58    /// GET /sitemaps/events/{subscriptionid}
59    ///
60    ///
61    async fn get_sitemap_events1<'subscriptionid, 'sitemap, 'pageid>(
62        &self,
63        subscriptionid: &'subscriptionid str,
64        sitemap: Option<&'sitemap str>,
65        pageid: Option<&'pageid str>,
66    ) -> Result<(), Error<GetSitemapEvents1Error>>;
67
68    /// GET /sitemaps
69    ///
70    ///
71    async fn get_sitemaps(&self) -> Result<Vec<models::SitemapDto>, Error<GetSitemapsError>>;
72
73    /// GET /sitemaps/{sitemapname}/{pageid}
74    ///
75    ///
76    async fn poll_data_for_page<
77        'sitemapname,
78        'pageid,
79        'accept_language,
80        'subscriptionid,
81        'include_hidden,
82    >(
83        &self,
84        sitemapname: &'sitemapname str,
85        pageid: &'pageid str,
86        accept_language: Option<&'accept_language str>,
87        subscriptionid: Option<&'subscriptionid str>,
88        include_hidden: Option<bool>,
89    ) -> Result<models::PageDto, Error<PollDataForPageError>>;
90
91    /// GET /sitemaps/{sitemapname}/*
92    ///
93    ///
94    async fn poll_data_for_sitemap<
95        'sitemapname,
96        'accept_language,
97        'subscriptionid,
98        'include_hidden,
99    >(
100        &self,
101        sitemapname: &'sitemapname str,
102        accept_language: Option<&'accept_language str>,
103        subscriptionid: Option<&'subscriptionid str>,
104        include_hidden: Option<bool>,
105    ) -> Result<models::SitemapDto, Error<PollDataForSitemapError>>;
106}
107
108pub struct SitemapsApiClient {
109    configuration: Arc<configuration::Configuration>,
110}
111
112impl SitemapsApiClient {
113    pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
114        Self { configuration }
115    }
116}
117
118#[async_trait]
119impl SitemapsApi for SitemapsApiClient {
120    async fn create_sitemap_event_subscription(
121        &self,
122    ) -> Result<(), Error<CreateSitemapEventSubscriptionError>> {
123        let local_var_configuration = &self.configuration;
124
125        let local_var_client = &local_var_configuration.client;
126
127        let local_var_uri_str = format!(
128            "{}/sitemaps/events/subscribe",
129            local_var_configuration.base_path
130        );
131        let mut local_var_req_builder =
132            local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
133
134        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
135            local_var_req_builder = local_var_req_builder
136                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
137        }
138
139        let local_var_req = local_var_req_builder.build()?;
140        let local_var_resp = local_var_client.execute(local_var_req).await?;
141
142        let local_var_status = local_var_resp.status();
143        let local_var_content = local_var_resp.text().await?;
144
145        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
146            Ok(())
147        } else {
148            let local_var_entity: Option<CreateSitemapEventSubscriptionError> =
149                serde_json::from_str(&local_var_content).ok();
150            let local_var_error = ResponseContent {
151                status: local_var_status,
152                content: local_var_content,
153                entity: local_var_entity,
154            };
155            Err(Error::ResponseError(local_var_error))
156        }
157    }
158
159    async fn get_sitemap_by_name<
160        'sitemapname,
161        'accept_language,
162        'r_type,
163        'jsoncallback,
164        'include_hidden,
165    >(
166        &self,
167        sitemapname: &'sitemapname str,
168        accept_language: Option<&'accept_language str>,
169        r#type: Option<&'r_type str>,
170        jsoncallback: Option<&'jsoncallback str>,
171        include_hidden: Option<bool>,
172    ) -> Result<models::SitemapDto, Error<GetSitemapByNameError>> {
173        let local_var_configuration = &self.configuration;
174
175        let local_var_client = &local_var_configuration.client;
176
177        let local_var_uri_str = format!(
178            "{}/sitemaps/{sitemapname}",
179            local_var_configuration.base_path,
180            sitemapname = crate::apis::urlencode(sitemapname)
181        );
182        let mut local_var_req_builder =
183            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
184
185        if let Some(ref local_var_str) = r#type {
186            local_var_req_builder =
187                local_var_req_builder.query(&[("type", &local_var_str.to_string())]);
188        }
189        if let Some(ref local_var_str) = jsoncallback {
190            local_var_req_builder =
191                local_var_req_builder.query(&[("jsoncallback", &local_var_str.to_string())]);
192        }
193        if let Some(ref local_var_str) = include_hidden {
194            local_var_req_builder =
195                local_var_req_builder.query(&[("includeHidden", &local_var_str.to_string())]);
196        }
197        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
198            local_var_req_builder = local_var_req_builder
199                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
200        }
201        if let Some(local_var_param_value) = accept_language {
202            local_var_req_builder =
203                local_var_req_builder.header("Accept-Language", local_var_param_value.to_string());
204        }
205
206        let local_var_req = local_var_req_builder.build()?;
207        let local_var_resp = local_var_client.execute(local_var_req).await?;
208
209        let local_var_status = local_var_resp.status();
210        let local_var_content_type = local_var_resp
211            .headers()
212            .get("content-type")
213            .and_then(|v| v.to_str().ok())
214            .unwrap_or("application/octet-stream");
215        let local_var_content_type = super::ContentType::from(local_var_content_type);
216        let local_var_content = local_var_resp.text().await?;
217
218        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
219            match local_var_content_type {
220                ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from),
221                ContentType::Text => {
222                    return Err(Error::from(serde_json::Error::custom(
223                        "Received `text/plain` content type response that cannot be converted to `models::SitemapDto`",
224                    )));
225                }
226                ContentType::Unsupported(local_var_unknown_type) => {
227                    return Err(Error::from(serde_json::Error::custom(format!(
228                        "Received `{local_var_unknown_type}` content type response that cannot be converted to `models::SitemapDto`"
229                    ))));
230                }
231            }
232        } else {
233            let local_var_entity: Option<GetSitemapByNameError> =
234                serde_json::from_str(&local_var_content).ok();
235            let local_var_error = ResponseContent {
236                status: local_var_status,
237                content: local_var_content,
238                entity: local_var_entity,
239            };
240            Err(Error::ResponseError(local_var_error))
241        }
242    }
243
244    async fn get_sitemap_events<'subscriptionid, 'sitemap>(
245        &self,
246        subscriptionid: &'subscriptionid str,
247        sitemap: Option<&'sitemap str>,
248    ) -> Result<(), Error<GetSitemapEventsError>> {
249        let local_var_configuration = &self.configuration;
250
251        let local_var_client = &local_var_configuration.client;
252
253        let local_var_uri_str = format!(
254            "{}/sitemaps/events/{subscriptionid}/*",
255            local_var_configuration.base_path,
256            subscriptionid = crate::apis::urlencode(subscriptionid)
257        );
258        let mut local_var_req_builder =
259            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
260
261        if let Some(ref local_var_str) = sitemap {
262            local_var_req_builder =
263                local_var_req_builder.query(&[("sitemap", &local_var_str.to_string())]);
264        }
265        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
266            local_var_req_builder = local_var_req_builder
267                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
268        }
269
270        let local_var_req = local_var_req_builder.build()?;
271        let local_var_resp = local_var_client.execute(local_var_req).await?;
272
273        let local_var_status = local_var_resp.status();
274        let local_var_content = local_var_resp.text().await?;
275
276        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
277            Ok(())
278        } else {
279            let local_var_entity: Option<GetSitemapEventsError> =
280                serde_json::from_str(&local_var_content).ok();
281            let local_var_error = ResponseContent {
282                status: local_var_status,
283                content: local_var_content,
284                entity: local_var_entity,
285            };
286            Err(Error::ResponseError(local_var_error))
287        }
288    }
289
290    async fn get_sitemap_events1<'subscriptionid, 'sitemap, 'pageid>(
291        &self,
292        subscriptionid: &'subscriptionid str,
293        sitemap: Option<&'sitemap str>,
294        pageid: Option<&'pageid str>,
295    ) -> Result<(), Error<GetSitemapEvents1Error>> {
296        let local_var_configuration = &self.configuration;
297
298        let local_var_client = &local_var_configuration.client;
299
300        let local_var_uri_str = format!(
301            "{}/sitemaps/events/{subscriptionid}",
302            local_var_configuration.base_path,
303            subscriptionid = crate::apis::urlencode(subscriptionid)
304        );
305        let mut local_var_req_builder =
306            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
307
308        if let Some(ref local_var_str) = sitemap {
309            local_var_req_builder =
310                local_var_req_builder.query(&[("sitemap", &local_var_str.to_string())]);
311        }
312        if let Some(ref local_var_str) = pageid {
313            local_var_req_builder =
314                local_var_req_builder.query(&[("pageid", &local_var_str.to_string())]);
315        }
316        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
317            local_var_req_builder = local_var_req_builder
318                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
319        }
320
321        let local_var_req = local_var_req_builder.build()?;
322        let local_var_resp = local_var_client.execute(local_var_req).await?;
323
324        let local_var_status = local_var_resp.status();
325        let local_var_content = local_var_resp.text().await?;
326
327        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
328            Ok(())
329        } else {
330            let local_var_entity: Option<GetSitemapEvents1Error> =
331                serde_json::from_str(&local_var_content).ok();
332            let local_var_error = ResponseContent {
333                status: local_var_status,
334                content: local_var_content,
335                entity: local_var_entity,
336            };
337            Err(Error::ResponseError(local_var_error))
338        }
339    }
340
341    async fn get_sitemaps(&self) -> Result<Vec<models::SitemapDto>, Error<GetSitemapsError>> {
342        let local_var_configuration = &self.configuration;
343
344        let local_var_client = &local_var_configuration.client;
345
346        let local_var_uri_str = format!("{}/sitemaps", local_var_configuration.base_path);
347        let mut local_var_req_builder =
348            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
349
350        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
351            local_var_req_builder = local_var_req_builder
352                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
353        }
354
355        let local_var_req = local_var_req_builder.build()?;
356        let local_var_resp = local_var_client.execute(local_var_req).await?;
357
358        let local_var_status = local_var_resp.status();
359        let local_var_content_type = local_var_resp
360            .headers()
361            .get("content-type")
362            .and_then(|v| v.to_str().ok())
363            .unwrap_or("application/octet-stream");
364        let local_var_content_type = super::ContentType::from(local_var_content_type);
365        let local_var_content = local_var_resp.text().await?;
366
367        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
368            match local_var_content_type {
369                ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from),
370                ContentType::Text => {
371                    return Err(Error::from(serde_json::Error::custom(
372                        "Received `text/plain` content type response that cannot be converted to `Vec&lt;models::SitemapDto&gt;`",
373                    )));
374                }
375                ContentType::Unsupported(local_var_unknown_type) => {
376                    return Err(Error::from(serde_json::Error::custom(format!(
377                        "Received `{local_var_unknown_type}` content type response that cannot be converted to `Vec&lt;models::SitemapDto&gt;`"
378                    ))));
379                }
380            }
381        } else {
382            let local_var_entity: Option<GetSitemapsError> =
383                serde_json::from_str(&local_var_content).ok();
384            let local_var_error = ResponseContent {
385                status: local_var_status,
386                content: local_var_content,
387                entity: local_var_entity,
388            };
389            Err(Error::ResponseError(local_var_error))
390        }
391    }
392
393    async fn poll_data_for_page<
394        'sitemapname,
395        'pageid,
396        'accept_language,
397        'subscriptionid,
398        'include_hidden,
399    >(
400        &self,
401        sitemapname: &'sitemapname str,
402        pageid: &'pageid str,
403        accept_language: Option<&'accept_language str>,
404        subscriptionid: Option<&'subscriptionid str>,
405        include_hidden: Option<bool>,
406    ) -> Result<models::PageDto, Error<PollDataForPageError>> {
407        let local_var_configuration = &self.configuration;
408
409        let local_var_client = &local_var_configuration.client;
410
411        let local_var_uri_str = format!(
412            "{}/sitemaps/{sitemapname}/{pageid}",
413            local_var_configuration.base_path,
414            sitemapname = crate::apis::urlencode(sitemapname),
415            pageid = crate::apis::urlencode(pageid)
416        );
417        let mut local_var_req_builder =
418            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
419
420        if let Some(ref local_var_str) = subscriptionid {
421            local_var_req_builder =
422                local_var_req_builder.query(&[("subscriptionid", &local_var_str.to_string())]);
423        }
424        if let Some(ref local_var_str) = include_hidden {
425            local_var_req_builder =
426                local_var_req_builder.query(&[("includeHidden", &local_var_str.to_string())]);
427        }
428        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
429            local_var_req_builder = local_var_req_builder
430                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
431        }
432        if let Some(local_var_param_value) = accept_language {
433            local_var_req_builder =
434                local_var_req_builder.header("Accept-Language", local_var_param_value.to_string());
435        }
436
437        let local_var_req = local_var_req_builder.build()?;
438        let local_var_resp = local_var_client.execute(local_var_req).await?;
439
440        let local_var_status = local_var_resp.status();
441        let local_var_content_type = local_var_resp
442            .headers()
443            .get("content-type")
444            .and_then(|v| v.to_str().ok())
445            .unwrap_or("application/octet-stream");
446        let local_var_content_type = super::ContentType::from(local_var_content_type);
447        let local_var_content = local_var_resp.text().await?;
448
449        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
450            match local_var_content_type {
451                ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from),
452                ContentType::Text => {
453                    return Err(Error::from(serde_json::Error::custom(
454                        "Received `text/plain` content type response that cannot be converted to `models::PageDto`",
455                    )));
456                }
457                ContentType::Unsupported(local_var_unknown_type) => {
458                    return Err(Error::from(serde_json::Error::custom(format!(
459                        "Received `{local_var_unknown_type}` content type response that cannot be converted to `models::PageDto`"
460                    ))));
461                }
462            }
463        } else {
464            let local_var_entity: Option<PollDataForPageError> =
465                serde_json::from_str(&local_var_content).ok();
466            let local_var_error = ResponseContent {
467                status: local_var_status,
468                content: local_var_content,
469                entity: local_var_entity,
470            };
471            Err(Error::ResponseError(local_var_error))
472        }
473    }
474
475    async fn poll_data_for_sitemap<
476        'sitemapname,
477        'accept_language,
478        'subscriptionid,
479        'include_hidden,
480    >(
481        &self,
482        sitemapname: &'sitemapname str,
483        accept_language: Option<&'accept_language str>,
484        subscriptionid: Option<&'subscriptionid str>,
485        include_hidden: Option<bool>,
486    ) -> Result<models::SitemapDto, Error<PollDataForSitemapError>> {
487        let local_var_configuration = &self.configuration;
488
489        let local_var_client = &local_var_configuration.client;
490
491        let local_var_uri_str = format!(
492            "{}/sitemaps/{sitemapname}/*",
493            local_var_configuration.base_path,
494            sitemapname = crate::apis::urlencode(sitemapname)
495        );
496        let mut local_var_req_builder =
497            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
498
499        if let Some(ref local_var_str) = subscriptionid {
500            local_var_req_builder =
501                local_var_req_builder.query(&[("subscriptionid", &local_var_str.to_string())]);
502        }
503        if let Some(ref local_var_str) = include_hidden {
504            local_var_req_builder =
505                local_var_req_builder.query(&[("includeHidden", &local_var_str.to_string())]);
506        }
507        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
508            local_var_req_builder = local_var_req_builder
509                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
510        }
511        if let Some(local_var_param_value) = accept_language {
512            local_var_req_builder =
513                local_var_req_builder.header("Accept-Language", local_var_param_value.to_string());
514        }
515
516        let local_var_req = local_var_req_builder.build()?;
517        let local_var_resp = local_var_client.execute(local_var_req).await?;
518
519        let local_var_status = local_var_resp.status();
520        let local_var_content_type = local_var_resp
521            .headers()
522            .get("content-type")
523            .and_then(|v| v.to_str().ok())
524            .unwrap_or("application/octet-stream");
525        let local_var_content_type = super::ContentType::from(local_var_content_type);
526        let local_var_content = local_var_resp.text().await?;
527
528        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
529            match local_var_content_type {
530                ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from),
531                ContentType::Text => {
532                    return Err(Error::from(serde_json::Error::custom(
533                        "Received `text/plain` content type response that cannot be converted to `models::SitemapDto`",
534                    )));
535                }
536                ContentType::Unsupported(local_var_unknown_type) => {
537                    return Err(Error::from(serde_json::Error::custom(format!(
538                        "Received `{local_var_unknown_type}` content type response that cannot be converted to `models::SitemapDto`"
539                    ))));
540                }
541            }
542        } else {
543            let local_var_entity: Option<PollDataForSitemapError> =
544                serde_json::from_str(&local_var_content).ok();
545            let local_var_error = ResponseContent {
546                status: local_var_status,
547                content: local_var_content,
548                entity: local_var_entity,
549            };
550            Err(Error::ResponseError(local_var_error))
551        }
552    }
553}
554
555/// struct for typed errors of method [SitemapsApi::create_sitemap_event_subscription]
556#[derive(Debug, Clone, Serialize, Deserialize)]
557#[serde(untagged)]
558pub enum CreateSitemapEventSubscriptionError {
559    Status503(),
560    UnknownValue(serde_json::Value),
561}
562
563/// struct for typed errors of method [SitemapsApi::get_sitemap_by_name]
564#[derive(Debug, Clone, Serialize, Deserialize)]
565#[serde(untagged)]
566pub enum GetSitemapByNameError {
567    UnknownValue(serde_json::Value),
568}
569
570/// struct for typed errors of method [SitemapsApi::get_sitemap_events]
571#[derive(Debug, Clone, Serialize, Deserialize)]
572#[serde(untagged)]
573pub enum GetSitemapEventsError {
574    Status400(),
575    Status404(),
576    UnknownValue(serde_json::Value),
577}
578
579/// struct for typed errors of method [SitemapsApi::get_sitemap_events1]
580#[derive(Debug, Clone, Serialize, Deserialize)]
581#[serde(untagged)]
582pub enum GetSitemapEvents1Error {
583    Status400(),
584    Status404(),
585    UnknownValue(serde_json::Value),
586}
587
588/// struct for typed errors of method [SitemapsApi::get_sitemaps]
589#[derive(Debug, Clone, Serialize, Deserialize)]
590#[serde(untagged)]
591pub enum GetSitemapsError {
592    UnknownValue(serde_json::Value),
593}
594
595/// struct for typed errors of method [SitemapsApi::poll_data_for_page]
596#[derive(Debug, Clone, Serialize, Deserialize)]
597#[serde(untagged)]
598pub enum PollDataForPageError {
599    Status400(),
600    Status404(),
601    UnknownValue(serde_json::Value),
602}
603
604/// struct for typed errors of method [SitemapsApi::poll_data_for_sitemap]
605#[derive(Debug, Clone, Serialize, Deserialize)]
606#[serde(untagged)]
607pub enum PollDataForSitemapError {
608    Status400(),
609    Status404(),
610    UnknownValue(serde_json::Value),
611}