hab_rs_api_client/apis/
events_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 EventsApi: Send + Sync {
24    /// GET /events
25    ///
26    ///
27    async fn get_events<'topics>(
28        &self,
29        topics: Option<&'topics str>,
30    ) -> Result<(), Error<GetEventsError>>;
31
32    /// GET /events/states
33    ///
34    ///
35    async fn init_new_state_tacker(&self) -> Result<(), Error<InitNewStateTackerError>>;
36
37    /// POST /events/states/{connectionId}
38    ///
39    ///
40    async fn update_item_list_for_state_updates<'connection_id, 'request_body>(
41        &self,
42        connection_id: &'connection_id str,
43        request_body: Option<Vec<String>>,
44    ) -> Result<(), Error<UpdateItemListForStateUpdatesError>>;
45}
46
47pub struct EventsApiClient {
48    configuration: Arc<configuration::Configuration>,
49}
50
51impl EventsApiClient {
52    pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
53        Self { configuration }
54    }
55}
56
57#[async_trait]
58impl EventsApi for EventsApiClient {
59    async fn get_events<'topics>(
60        &self,
61        topics: Option<&'topics str>,
62    ) -> Result<(), Error<GetEventsError>> {
63        let local_var_configuration = &self.configuration;
64
65        let local_var_client = &local_var_configuration.client;
66
67        let local_var_uri_str = format!("{}/events", local_var_configuration.base_path);
68        let mut local_var_req_builder =
69            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
70
71        if let Some(ref local_var_str) = topics {
72            local_var_req_builder =
73                local_var_req_builder.query(&[("topics", &local_var_str.to_string())]);
74        }
75        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
76            local_var_req_builder = local_var_req_builder
77                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
78        }
79
80        let local_var_req = local_var_req_builder.build()?;
81        let local_var_resp = local_var_client.execute(local_var_req).await?;
82
83        let local_var_status = local_var_resp.status();
84        let local_var_content = local_var_resp.text().await?;
85
86        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
87            Ok(())
88        } else {
89            let local_var_entity: Option<GetEventsError> =
90                serde_json::from_str(&local_var_content).ok();
91            let local_var_error = ResponseContent {
92                status: local_var_status,
93                content: local_var_content,
94                entity: local_var_entity,
95            };
96            Err(Error::ResponseError(local_var_error))
97        }
98    }
99
100    async fn init_new_state_tacker(&self) -> Result<(), Error<InitNewStateTackerError>> {
101        let local_var_configuration = &self.configuration;
102
103        let local_var_client = &local_var_configuration.client;
104
105        let local_var_uri_str = format!("{}/events/states", local_var_configuration.base_path);
106        let mut local_var_req_builder =
107            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
108
109        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
110            local_var_req_builder = local_var_req_builder
111                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
112        }
113
114        let local_var_req = local_var_req_builder.build()?;
115        let local_var_resp = local_var_client.execute(local_var_req).await?;
116
117        let local_var_status = local_var_resp.status();
118        let local_var_content = local_var_resp.text().await?;
119
120        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
121            Ok(())
122        } else {
123            let local_var_entity: Option<InitNewStateTackerError> =
124                serde_json::from_str(&local_var_content).ok();
125            let local_var_error = ResponseContent {
126                status: local_var_status,
127                content: local_var_content,
128                entity: local_var_entity,
129            };
130            Err(Error::ResponseError(local_var_error))
131        }
132    }
133
134    async fn update_item_list_for_state_updates<'connection_id, 'request_body>(
135        &self,
136        connection_id: &'connection_id str,
137        request_body: Option<Vec<String>>,
138    ) -> Result<(), Error<UpdateItemListForStateUpdatesError>> {
139        let local_var_configuration = &self.configuration;
140
141        let local_var_client = &local_var_configuration.client;
142
143        let local_var_uri_str = format!(
144            "{}/events/states/{connectionId}",
145            local_var_configuration.base_path,
146            connectionId = crate::apis::urlencode(connection_id)
147        );
148        let mut local_var_req_builder =
149            local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
150
151        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
152            local_var_req_builder = local_var_req_builder
153                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
154        }
155        local_var_req_builder = local_var_req_builder.json(&request_body);
156
157        let local_var_req = local_var_req_builder.build()?;
158        let local_var_resp = local_var_client.execute(local_var_req).await?;
159
160        let local_var_status = local_var_resp.status();
161        let local_var_content = local_var_resp.text().await?;
162
163        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
164            Ok(())
165        } else {
166            let local_var_entity: Option<UpdateItemListForStateUpdatesError> =
167                serde_json::from_str(&local_var_content).ok();
168            let local_var_error = ResponseContent {
169                status: local_var_status,
170                content: local_var_content,
171                entity: local_var_entity,
172            };
173            Err(Error::ResponseError(local_var_error))
174        }
175    }
176}
177
178/// struct for typed errors of method [EventsApi::get_events]
179#[derive(Debug, Clone, Serialize, Deserialize)]
180#[serde(untagged)]
181pub enum GetEventsError {
182    Status400(),
183    UnknownValue(serde_json::Value),
184}
185
186/// struct for typed errors of method [EventsApi::init_new_state_tacker]
187#[derive(Debug, Clone, Serialize, Deserialize)]
188#[serde(untagged)]
189pub enum InitNewStateTackerError {
190    UnknownValue(serde_json::Value),
191}
192
193/// struct for typed errors of method [EventsApi::update_item_list_for_state_updates]
194#[derive(Debug, Clone, Serialize, Deserialize)]
195#[serde(untagged)]
196pub enum UpdateItemListForStateUpdatesError {
197    Status404(),
198    UnknownValue(serde_json::Value),
199}