summaryrefslogtreecommitdiff
path: root/src/events/routes.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/events/routes.rs')
-rw-r--r--src/events/routes.rs11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/events/routes.rs b/src/events/routes.rs
index ce5b778..a6bf5d9 100644
--- a/src/events/routes.rs
+++ b/src/events/routes.rs
@@ -22,11 +22,14 @@ use crate::{
repo::{channel, login::Login},
};
+#[cfg(test)]
+mod test;
+
pub fn router() -> Router<App> {
Router::new().route("/api/events", get(events))
}
-#[derive(serde::Deserialize)]
+#[derive(Clone, serde::Deserialize)]
struct EventsQuery {
#[serde(default, rename = "channel")]
channels: Vec<channel::Id>,
@@ -38,7 +41,7 @@ async fn events(
_: Login, // requires auth, but doesn't actually care who you are
last_event_id: Option<LastEventId>,
Query(query): Query<EventsQuery>,
-) -> Result<Events<impl Stream<Item = ChannelEvent>>, ErrorResponse> {
+) -> Result<Events<impl Stream<Item = ChannelEvent> + std::fmt::Debug>, ErrorResponse> {
let resume_at = last_event_id.as_deref();
let streams = stream::iter(query.channels)
@@ -64,6 +67,7 @@ async fn events(
Ok(Events(stream))
}
+#[derive(Debug)]
struct Events<S>(S);
impl<S> IntoResponse for Events<S>
@@ -79,6 +83,7 @@ where
}
}
+#[derive(Debug)]
struct ErrorResponse(EventsError);
impl IntoResponse for ErrorResponse {
@@ -96,7 +101,7 @@ impl IntoResponse for ErrorResponse {
}
}
-#[derive(serde::Serialize)]
+#[derive(Debug, serde::Serialize)]
struct ChannelEvent {
channel: channel::Id,
#[serde(flatten)]