eventsource_client/
lib.rs

1#![warn(rust_2018_idioms)]
2//! Client for the [Server-Sent Events] protocol (aka [EventSource]).
3//!
4//! ```
5//! use futures::{TryStreamExt};
6//! # use eventsource_client::Error;
7//! use eventsource_client::{Client, SSE};
8//! # #[tokio::main]
9//! # async fn main() -> Result<(), eventsource_client::Error> {
10//! let mut client = eventsource_client::ClientBuilder::for_url("https://example.com/stream")?
11//!     .header("Authorization", "Basic username:password")?
12//!     .build();
13//!
14//! let mut stream = Box::pin(client.stream())
15//!     .map_ok(|event| match event {
16//!         SSE::Comment(comment) => println!("got a comment event: {:?}", comment),
17//!         SSE::Event(evt) => println!("got an event: {}", evt.event_type),
18//!         SSE::Connected(_) => println!("got connected")
19//!     })
20//!     .map_err(|e| println!("error streaming events: {:?}", e));
21//! # while let Ok(Some(_)) = stream.try_next().await {}
22//! #
23//! # Ok(())
24//! # }
25//! ```
26//!
27//![Server-Sent Events]: https://html.spec.whatwg.org/multipage/server-sent-events.html
28//![EventSource]: https://developer.mozilla.org/en-US/docs/Web/API/EventSource
29
30mod client;
31mod config;
32mod error;
33mod event_parser;
34mod response;
35mod retry;
36
37pub use client::*;
38pub use config::*;
39pub use error::*;
40pub use event_parser::Event;
41pub use event_parser::SSE;
42pub use response::Response;