From 4c9e6fbe35d6d000b156bf99ae7b3189c7d2152f Mon Sep 17 00:00:00 2001 From: Bel LaPointe <153096461+breel-render@users.noreply.github.com> Date: Mon, 28 Apr 2025 21:59:00 -0600 Subject: [PATCH] a dummy readonly ui but no way to write and nothing written is boring --- src/cmd/server/handler/testdata/index.html | 9 ----- src/cmd/server/handler/testdata/index.tmpl | 8 +++++ src/cmd/server/handler/ui.go | 42 ++++++++++++++++++++-- 3 files changed, 47 insertions(+), 12 deletions(-) delete mode 100644 src/cmd/server/handler/testdata/index.html create mode 100644 src/cmd/server/handler/testdata/index.tmpl diff --git a/src/cmd/server/handler/testdata/index.html b/src/cmd/server/handler/testdata/index.html deleted file mode 100644 index 65ee7da..0000000 --- a/src/cmd/server/handler/testdata/index.html +++ /dev/null @@ -1,9 +0,0 @@ - -
-
- -

Hello World

- - - diff --git a/src/cmd/server/handler/testdata/index.tmpl b/src/cmd/server/handler/testdata/index.tmpl new file mode 100644 index 0000000..654e809 --- /dev/null +++ b/src/cmd/server/handler/testdata/index.tmpl @@ -0,0 +1,8 @@ + + +

Hello templated world b

+ {{ range feeds }} + feed = {{ . }} + {{ end }} + + diff --git a/src/cmd/server/handler/ui.go b/src/cmd/server/handler/ui.go index 83d4fb8..70673c2 100644 --- a/src/cmd/server/handler/ui.go +++ b/src/cmd/server/handler/ui.go @@ -1,13 +1,49 @@ package handler import ( - "log" + "html/template" "net/http" + "os" + "path" + "show-rss/src/feeds" ) +var dir = func() string { + if v := os.Getenv("UI_D"); v != "" { + return v + } + return "./src/cmd/server/handler/testdata" +}() + func (h Handler) ui(w http.ResponseWriter, r *http.Request) error { - log.Printf("ui(%s)", r.URL.String()) - fs := http.FileServer(http.Dir("./src/cmd/server/handler/testdata")) + fs := http.FileServer(http.Dir(dir)) + if path.Base(r.URL.Path) == "ui" { + return h.uiIndex(w, r) + } http.StripPrefix("/experimental/ui", fs).ServeHTTP(w, r) return nil } + +func (h Handler) uiIndex(w http.ResponseWriter, r *http.Request) error { + ctx := r.Context() + + b, _ := os.ReadFile(path.Join(dir, "index.tmpl")) + + tmpl := template.New(r.URL.Path).Funcs(template.FuncMap{ + "feeds": func() ([]feeds.Feed, error) { + all := []feeds.Feed{} + err := feeds.ForEach(ctx, func(f feeds.Feed) error { + all = append(all, f) + return ctx.Err() + }) + return all, err + }, + }) + + tmpl, err := tmpl.Parse(string(b)) + if err != nil { + return err + } + + return tmpl.Execute(w, nil) +}