From 423e4e11a3748bbafb887158b30a9e007e1753c1 Mon Sep 17 00:00:00 2001 From: Amir Raminfar Date: Fri, 4 Oct 2024 15:22:19 -0700 Subject: [PATCH] chore: cleans up urls for levels (#3314) --- assets/composable/eventStreams.ts | 29 +++++++++++++++-------------- internal/web/logs.go | 4 ++-- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/assets/composable/eventStreams.ts b/assets/composable/eventStreams.ts index 2e6763472f64..b7232d8618b9 100644 --- a/assets/composable/eventStreams.ts +++ b/assets/composable/eventStreams.ts @@ -107,20 +107,17 @@ function useLogStream(url: Ref, loadMoreUrl?: Ref) { const { streamConfig, hasComplexLogs, levels } = useLoggingContext(); const params = computed(() => { - const params = Object.entries(toValue(streamConfig)) - .filter(([, value]) => value) - .reduce((acc, [key]) => ({ ...acc, [key]: "1" }), {} as Record); - - if (isSearching.value) { - params["filter"] = debouncedSearchFilter.value; + const params = new URLSearchParams(); + if (streamConfig.value.stdout) params.append("stdout", "1"); + if (streamConfig.value.stderr) params.append("stderr", "1"); + if (isSearching.value) params.append("filter", debouncedSearchFilter.value); + for (const level of levels.value) { + params.append("levels", level); } - - params["levels"] = [...levels.value].join(","); - return params; }); - const urlWithParams = computed(() => withBase(`${url.value}?${new URLSearchParams(params.value).toString()}`)); + const urlWithParams = computed(() => withBase(`${url.value}?${params.value.toString()}`)); function connect({ clear } = { clear: true }) { close(); @@ -172,10 +169,14 @@ function useLogStream(url: Ref, loadMoreUrl?: Ref) { const signal = abortController.signal; isLoadingMore.value = true; try { - const moreParams = { ...params.value, from: from.toISOString(), to: to.toISOString(), minimum: "100" }; - const urlWithMoreParams = computed(() => - withBase(`${loadMoreUrl.value}?${new URLSearchParams(moreParams).toString()}`), - ); + const urlWithMoreParams = computed(() => { + const loadMoreParams = new URLSearchParams(params.value); + loadMoreParams.append("from", from.toISOString()); + loadMoreParams.append("to", to.toISOString()); + loadMoreParams.append("minimum", "100"); + + return withBase(`${loadMoreUrl.value}?${loadMoreParams.toString()}`); + }); const stopWatcher = watchOnce(urlWithMoreParams, () => abortController.abort("stream changed")); const logs = await (await fetch(urlWithMoreParams.value, { signal })).text(); stopWatcher(); diff --git a/internal/web/logs.go b/internal/web/logs.go index ddad15c84389..9e7eb839d64d 100644 --- a/internal/web/logs.go +++ b/internal/web/logs.go @@ -143,7 +143,7 @@ func (h *handler) fetchLogsBetweenDates(w http.ResponseWriter, r *http.Request) levels := make(map[string]struct{}) if r.URL.Query().Has("levels") { - for _, level := range strings.Split(r.URL.Query().Get("levels"), ",") { + for _, level := range r.URL.Query()["levels"] { levels[level] = struct{}{} } } else { @@ -288,7 +288,7 @@ func streamLogsForContainers(w http.ResponseWriter, r *http.Request, multiHostCl levels := make(map[string]struct{}) if r.URL.Query().Has("levels") { - for _, level := range strings.Split(r.URL.Query().Get("levels"), ",") { + for _, level := range r.URL.Query()["levels"] { levels[level] = struct{}{} } } else {