From 9923878c5c8b68df7f132efd28f76ce5478a1f1a Mon Sep 17 00:00:00 2001 From: Xe Iaso Date: Mon, 17 Mar 2025 19:33:07 -0400 Subject: initial import from /x/ monorepo Signed-off-by: Xe Iaso --- internal/headers.go | 20 ++++++++++++++++++++ internal/slog.go | 24 ++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 internal/headers.go create mode 100644 internal/slog.go (limited to 'internal') diff --git a/internal/headers.go b/internal/headers.go new file mode 100644 index 0000000..47aa2cc --- /dev/null +++ b/internal/headers.go @@ -0,0 +1,20 @@ +package internal + +import ( + "net/http" + + "github.com/TecharoHQ/anubis" +) + +// UnchangingCache sets the Cache-Control header to cache a response for 1 year if +// and only if the application is compiled in "release" mode by Docker. +func UnchangingCache(h http.Handler) http.Handler { + if anubis.Version == "devel" { + return h + } + + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Cache-Control", "public, max-age=31536000") + h.ServeHTTP(w, r) + }) +} diff --git a/internal/slog.go b/internal/slog.go new file mode 100644 index 0000000..115e1d2 --- /dev/null +++ b/internal/slog.go @@ -0,0 +1,24 @@ +package internal + +import ( + "fmt" + "log/slog" + "os" +) + +func InitSlog(level string) { + var programLevel slog.Level + if err := (&programLevel).UnmarshalText([]byte(level)); err != nil { + fmt.Fprintf(os.Stderr, "invalid log level %s: %v, using info\n", level, err) + programLevel = slog.LevelInfo + } + + leveler := &slog.LevelVar{} + leveler.Set(programLevel) + + h := slog.NewJSONHandler(os.Stderr, &slog.HandlerOptions{ + AddSource: true, + Level: leveler, + }) + slog.SetDefault(slog.New(h)) +} -- cgit v1.2.3