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