feat: translation middleware

This commit is contained in:
2026-03-02 22:37:11 +01:00
parent dd5e32cc4d
commit 9a1f7e0d99
35 changed files with 1467 additions and 83 deletions
+23 -6
View File
@@ -5,19 +5,36 @@ import (
"net/http"
"time"
"git.schreifuchs.ch/schreifuchs/schreifuchs.ch/internal/handler"
"git.schreifuchs.ch/schreifuchs/schreifuchs.ch/internal/components/page"
"git.schreifuchs.ch/schreifuchs/schreifuchs.ch/internal/components/translate"
"git.schreifuchs.ch/schreifuchs/schreifuchs.ch/internal/handlers/handlehome"
"git.schreifuchs.ch/schreifuchs/schreifuchs.ch/internal/templer"
"git.schreifuchs.ch/schreifuchs/schreifuchs.ch/web"
)
func (s *Server) RegisterRoutes() http.Handler {
func (s *Server) RegisterRoutes() (h http.Handler) {
mux := http.NewServeMux()
fileServer := http.FileServer(http.FS(web.GetStaticFS()))
mux.Handle("/static/", http.StripPrefix("/static/", fileServer))
registerStatic(mux)
mux.Handle("/", registerOther())
mux.Handle("/", handler.Home())
h = mux
h = templer.Middleware(h)
h = s.loggingMiddleware(h)
return h
}
return s.loggingMiddleware(mux)
func registerOther() http.Handler {
mux := http.NewServeMux()
pager := page.New()
_ = handlehome.New(mux, pager)
mux.Handle("/", http.FileServer(http.FS(web.GetStaticFS())))
translator := translate.New()
return translator.Middleware(mux)
}
func (s *Server) loggingMiddleware(next http.Handler) http.Handler {
+38
View File
@@ -0,0 +1,38 @@
package server
import (
"io/fs"
"log/slog"
"net/http"
"git.schreifuchs.ch/schreifuchs/schreifuchs.ch/web"
)
// registerStatic registers all the static files.
func registerStatic(mux *http.ServeMux) {
fileSystem := web.GetStaticFS()
// we still use go's fileServer to avoid unnecessary implementation
fileServer := http.FileServer(http.FS(fileSystem))
err := fs.WalkDir(fileSystem, ".", func(path string, d fs.DirEntry, err error) error {
if err != nil {
return err
}
if d.IsDir() {
return nil
}
path = "/" + path
slog.Info("registering file", "path", path)
mux.Handle(path, fileServer)
return nil
})
if err != nil {
slog.Error("could not register static files", "err", err)
panic(err)
}
}