@@ -26,9 +26,7 @@ use crate::{
26
26
event:: { Event , EventCandidate , ManagementEvent } ,
27
27
} ;
28
28
use client_request:: {
29
- ClientRequest , ListEventTypesRequest , ListSubjectsRequest , OneShotRequest , PingRequest ,
30
- ReadEventsRequest , RegisterEventSchemaRequest , StreamingRequest , VerifyApiTokenRequest ,
31
- WriteEventsRequest , list_event_types:: EventType ,
29
+ list_event_types:: EventType , ClientRequest , ListEventTypesRequest , ListSubjectsRequest , ObserveEventsRequest , OneShotRequest , PingRequest , ReadEventsRequest , RegisterEventSchemaRequest , StreamingRequest , VerifyApiTokenRequest , WriteEventsRequest
32
30
} ;
33
31
use futures:: Stream ;
34
32
pub use precondition:: Precondition ;
@@ -210,6 +208,39 @@ impl Client {
210
208
Ok ( response)
211
209
}
212
210
211
+ /// Observe events from the DB instance.
212
+ ///
213
+ /// ```
214
+ /// use eventsourcingdb_client_rust::event::EventCandidate;
215
+ /// use futures::StreamExt;
216
+ /// # use serde_json::json;
217
+ /// # tokio_test::block_on(async {
218
+ /// # let container = eventsourcingdb_client_rust::container::Container::start_default().await.unwrap();
219
+ /// let db_url = "http://localhost:3000/";
220
+ /// let api_token = "secrettoken";
221
+ /// # let db_url = container.get_base_url().await.unwrap();
222
+ /// # let api_token = container.get_api_token();
223
+ /// let client = eventsourcingdb_client_rust::client::Client::new(db_url, api_token);
224
+ /// let mut event_stream = client.observe_events("/", None).await.expect("Failed to observe events");
225
+ /// while let Some(event) = event_stream.next().await {
226
+ /// println!("Found Type {:?}", event.expect("Error while reading event"));
227
+ /// }
228
+ /// # })
229
+ /// ```
230
+ ///
231
+ /// # Errors
232
+ /// This function will return an error if the request fails or if the URL is invalid.
233
+ pub async fn observe_events < ' a > (
234
+ & self ,
235
+ subject : & ' a str ,
236
+ options : Option < request_options:: ObserveEventsRequestOptions < ' a > > ,
237
+ ) -> Result < impl Stream < Item = Result < Event , ClientError > > , ClientError > {
238
+ let response = self
239
+ . request_streaming ( ObserveEventsRequest { subject, options } )
240
+ . await ?;
241
+ Ok ( response)
242
+ }
243
+
213
244
/// Verifies the API token by sending a request to the DB instance.
214
245
///
215
246
/// ```
0 commit comments