From a648fa745a948627421286b8127da43410f48844 Mon Sep 17 00:00:00 2001 From: Tigor Hutasuhut Date: Mon, 10 Jun 2024 23:36:26 +0700 Subject: [PATCH] events: fix filters not handling empty filter query params --- server/routes/events/event_htmx.go | 7 +++++-- server/routes/events/event_json.go | 9 ++++++--- server/routes/events/event_simple.go | 5 ++++- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/server/routes/events/event_htmx.go b/server/routes/events/event_htmx.go index 1ab5a3f..4afd21e 100644 --- a/server/routes/events/event_htmx.go +++ b/server/routes/events/event_htmx.go @@ -20,7 +20,10 @@ func (handler *Handler) HTMXEvents(rw http.ResponseWriter, r *http.Request) { _ = json.NewEncoder(rw).Encode(map[string]string{"error": "response writer does not support streaming"}) return } - filters := strings.Split(r.URL.Query().Get("filter"), ",") + var filters []string + if q := r.URL.Query().Get("filter"); q != "" { + filters = strings.Split(q, ",") + } log.New(ctx).Info("new htmx event stream connection", "user_agent", r.UserAgent()) rw.Header().Set("Content-Type", "text/event-stream") @@ -36,7 +39,7 @@ loop: for { select { case <-r.Context().Done(): - log.New(ctx).Info("simple event stream connection closed", "user_agent", r.UserAgent()) + log.New(ctx).Info("HTMX event stream connection closed", "user_agent", r.UserAgent()) return case event := <-ev: msg := event.Event() diff --git a/server/routes/events/event_json.go b/server/routes/events/event_json.go index d26978c..99ec827 100644 --- a/server/routes/events/event_json.go +++ b/server/routes/events/event_json.go @@ -20,9 +20,12 @@ func (handler *Handler) JSONEvents(rw http.ResponseWriter, r *http.Request) { _ = json.NewEncoder(rw).Encode(map[string]string{"error": "response writer does not support streaming"}) return } - filters := strings.Split(r.URL.Query().Get("filter"), ",") + var filters []string + if q := r.URL.Query().Get("filter"); q != "" { + filters = strings.Split(q, ",") + } - log.New(ctx).Info("new htmx event stream connection", "user_agent", r.UserAgent()) + log.New(ctx).Info("new json event stream connection", "user_agent", r.UserAgent()) rw.Header().Set("Content-Type", "text/event-stream") rw.Header().Set("Cache-Control", "no-cache") rw.Header().Set("Connection", "keep-alive") @@ -36,7 +39,7 @@ loop: for { select { case <-r.Context().Done(): - log.New(ctx).Info("simple event stream connection closed", "user_agent", r.UserAgent()) + log.New(ctx).Info("json event stream connection closed", "user_agent", r.UserAgent()) return case event := <-ev: msg := event.Event() diff --git a/server/routes/events/event_simple.go b/server/routes/events/event_simple.go index 728ab58..11b21bb 100644 --- a/server/routes/events/event_simple.go +++ b/server/routes/events/event_simple.go @@ -26,7 +26,10 @@ func (handler *Handler) SimpleEvents(rw http.ResponseWriter, r *http.Request) { return } - filters := strings.Split(r.URL.Query().Get("filter"), ",") + var filters []string + if q := r.URL.Query().Get("filter"); q != "" { + filters = strings.Split(q, ",") + } log.New(ctx).Info("new simple event stream connection", "user_agent", r.UserAgent())