eventsource-stream 0.2.3

A basic building block for building an Eventsource from a Stream of bytes
Documentation
use eventsource_stream::Eventsource;
use futures::stream::StreamExt;
use http::response::Builder;
use reqwest::Response;
use reqwest::ResponseBuilderExt;
use url::Url;

#[tokio::main(flavor = "current_thread")]
async fn main() {
    let url = Url::parse("https://example.com").unwrap();
    let response = Builder::new()
        .status(200)
        .url(url.clone())
        .body(
            "event: my-event\r\ndata:line1
data: line2
:
id: my-id
:should be ignored too\rretry:42

",
        )
        .unwrap();
    let response = Response::from(response);
    let mut stream = response.bytes_stream().eventsource();

    let event = stream.next().await.unwrap().unwrap();
    assert_eq!("my-event", event.event);
    assert_eq!(
        "line1
line2",
        event.data
    );
    assert_eq!("my-id", event.id);
    assert_eq!(std::time::Duration::from_millis(42), event.retry.unwrap());
}