box_open_sdk/managers/
events.rs1use crate::runtime::{self, Error};
4
5#[derive(Clone, Debug, Default)]
7pub struct EventsListOptions {
8 pub stream_type: Option<crate::models::schemas::GetStreamType>,
9 pub stream_position: Option<String>,
10 pub limit: Option<i64>,
11 pub event_type: Option<Vec<crate::models::schemas::GetEventType>>,
12 pub created_after: Option<String>,
13 pub created_before: Option<String>,
14}
15
16pub struct EventsManager {
18 session: std::sync::Arc<runtime::Client>,
19}
20
21impl EventsManager {
22 pub(crate) fn new(session: std::sync::Arc<runtime::Client>) -> Self {
23 Self { session }
24 }
25
26 pub async fn list(
27 &self,
28 opts: Option<EventsListOptions>,
29 ) -> Result<crate::models::schemas::Events, Error> {
30 let mut url = self.session.base_url("api");
31 url.push_str("/events");
32 let mut req = self.session.new_request("GET", &url);
33 let opts = opts.unwrap_or_default();
34 if let Some(value) = opts.stream_type {
35 req = runtime::with_query(req, "stream_type", &value.0);
36 }
37 if let Some(value) = opts.stream_position {
38 req = runtime::with_query(req, "stream_position", &value);
39 }
40 if let Some(value) = opts.limit {
41 req = runtime::with_query(req, "limit", &value.to_string());
42 }
43 if let Some(value) = opts.event_type {
44 let arg = crate::internal::join(&value, |v| v.0.clone());
45 req = runtime::with_query(req, "event_type", &arg);
46 }
47 if let Some(value) = opts.created_after {
48 req = runtime::with_query(req, "created_after", &value);
49 }
50 if let Some(value) = opts.created_before {
51 req = runtime::with_query(req, "created_before", &value);
52 }
53 let resp = self.session.fetch(req).await?;
54 let data = runtime::response_bytes(&resp)?;
55 Ok(serde_json::from_slice(&data)?)
56 }
57
58 pub async fn options(&self) -> Result<crate::models::schemas::RealtimeServers, Error> {
59 let mut url = self.session.base_url("api");
60 url.push_str("/events");
61 let req = self.session.new_request("OPTIONS", &url);
62 let resp = self.session.fetch(req).await?;
63 let data = runtime::response_bytes(&resp)?;
64 Ok(serde_json::from_slice(&data)?)
65 }
66}