Skip to content

Commit 712ab91

Browse files
authored
Move SSE parsing logic into event_parser.rs (#19)
* Move parsing logic into event_parser.rs * Fix a couple Clippy lints related to Rust 2018 * Add InvalidParameter error, and update client.rs to use it instead of HttpRequest errors
1 parent 9c3f5a6 commit 712ab91

File tree

12 files changed

+818
-776
lines changed

12 files changed

+818
-776
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
TEMP_TEST_OUTPUT=/tmp/contract-test-service.log
2-
SKIPFLAGS = -skip 'linefeeds' -skip 'basic parsing' -skip 'HTTP behavior' -skip 'reconnection'
2+
SKIPFLAGS = -skip 'basic parsing' -skip 'HTTP behavior' -skip 'reconnection'
33

44
build-contract-tests:
55
@cargo build

contract-tests/src/bin/sse-test-api/main.rs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,21 +35,25 @@ struct Config {
3535
}
3636

3737
#[derive(Serialize, Debug)]
38-
#[serde(tag = "kind")]
38+
#[serde(tag = "kind", rename_all = "camelCase")]
3939
enum EventType {
40-
#[serde(rename = "event")]
4140
Event { event: Event },
42-
#[serde(rename = "error")]
41+
Comment { comment: String },
4342
Error { error: String },
4443
}
4544

46-
impl From<es::Event> for EventType {
47-
fn from(event: es::Event) -> Self {
48-
Self::Event {
49-
event: Event {
50-
event_type: event.event_type.clone(),
51-
data: String::from_utf8(event.field("data").unwrap_or_default().to_vec()).unwrap(),
52-
id: String::from_utf8(event.field("id").unwrap_or_default().to_vec()).unwrap(),
45+
impl From<es::SSE> for EventType {
46+
fn from(event: es::SSE) -> Self {
47+
match event {
48+
es::SSE::Event(evt) => Self::Event {
49+
event: Event {
50+
event_type: evt.event_type,
51+
data: String::from_utf8(evt.data.to_vec()).unwrap(),
52+
id: String::from_utf8(evt.id.to_vec()).unwrap(),
53+
},
54+
},
55+
es::SSE::Comment(comment) => Self::Comment {
56+
comment: String::from_utf8(comment).unwrap(),
5357
},
5458
}
5559
}

eventsource-client/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ env_logger = "0.7.1"
2626
maplit = "1.0.1"
2727
simplelog = "0.5.3"
2828
tokio = { version = "1.2.0", features = ["macros", "rt-multi-thread"] }
29+
test-case = "1.2.3"
2930

3031
[features]
3132
default = ["rustls"]

eventsource-client/examples/tail.rs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,20 @@ async fn main() -> Result<(), es::Error> {
4040
fn tail_events(client: impl Client) -> impl Stream<Item = Result<(), ()>> {
4141
client
4242
.stream()
43-
.map_ok(|event| {
44-
println!(
45-
"got an event: {}\n{}",
46-
event.event_type,
47-
from_utf8(event.field("data").unwrap_or_default()).unwrap_or_default()
48-
)
43+
.map_ok(|event| match event {
44+
es::SSE::Event(ev) => {
45+
println!(
46+
"got an event: {}\n{}",
47+
ev.event_type,
48+
from_utf8(&ev.data).unwrap_or_default()
49+
)
50+
}
51+
es::SSE::Comment(comment) => {
52+
println!(
53+
"got a comment: \n{}",
54+
from_utf8(&comment).unwrap_or_default()
55+
)
56+
}
4957
})
5058
.map_err(|err| eprintln!("error streaming events: {:?}", err))
5159
}

0 commit comments

Comments
 (0)