From 1862f232eb70105340a91e74a5630c233a411bca Mon Sep 17 00:00:00 2001 From: SayaAndy Date: Tue, 28 Oct 2025 23:04:53 +0700 Subject: refactor: make structurized implementation of routes + separate identity of router feat: update go to 1.25 feat: update all dependencies debug: display routes when debug logs turned on --- internal/router/handlers/lang.go | 56 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 internal/router/handlers/lang.go (limited to 'internal/router/handlers/lang.go') diff --git a/internal/router/handlers/lang.go b/internal/router/handlers/lang.go new file mode 100644 index 0000000..fc4deb6 --- /dev/null +++ b/internal/router/handlers/lang.go @@ -0,0 +1,56 @@ +package handlers + +import ( + "fmt" + "math/rand/v2" + "time" + + "github.com/SayaAndy/saya-today-web/internal/router" + "github.com/gofiber/fiber/v2" +) + +func init() { + router.Routes = append(router.Routes, &HomeHandler{}) +} + +type HomeHandler struct { + router.BasicHandler +} + +func (r *HomeHandler) Filter() (method string, path string) { + return "GET", "/:lang" +} + +func (r *HomeHandler) IsTemplated() bool { + return true +} + +func (r *HomeHandler) TemplatesToInject() []string { + return []string{"views/pages/home-page.html"} +} + +func (r *HomeHandler) ToCache() router.CacheSetting { + return router.ByUrlOnly +} + +func (r *HomeHandler) CacheDuration() time.Duration { + return 10 * time.Minute +} + +func (r *HomeHandler) ToValidateLang() router.LangSetting { + return router.InPath +} + +func (r *HomeHandler) RenderBody(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (statusCode int, err error) { + templateMap["Title"] = supplements.Localization[lang].HomePage.Header + templateMap["FilledHeartCount"] = uint(40) + templateMap["OutlineHeartCount"] = uint(40) + templateMap["GifName"] = fmt.Sprintf("otter-%d.gif", rand.Int()%3+1) + templateMap["FunFacts"] = supplements.FactGiver.Give(lang) + return fiber.StatusOK, nil +} + +func (r *HomeHandler) RenderHeader(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (statusCode int, err error) { + templateMap["Title"] = supplements.Localization[lang].HomePage.Header + return fiber.StatusOK, nil +} -- cgit v1.3.1+13