tijl.dev-core/cmd/server/main.go
tijl e6d6ba4041
Some checks failed
build / build (push) Failing after 0s
updates
2024-08-20 18:25:59 +02:00

92 lines
2.1 KiB
Go

package main
import (
"net/http"
"git.tijl.dev/tijl/tijl.dev/internal/assets"
"git.tijl.dev/tijl/tijl.dev/internal/config"
"git.tijl.dev/tijl/tijl.dev/internal/i18n"
"git.tijl.dev/tijl/tijl.dev/static"
"git.tijl.dev/tijl/tijl.dev/views"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/filesystem"
"github.com/gofiber/template/html/v2"
"github.com/mikhail-bigun/fiberlogrus"
log "github.com/sirupsen/logrus"
)
func main() {
log.SetLevel(log.DebugLevel)
config.Load()
assets.Load()
i18n.Load()
engine := html.NewFileSystem(http.FS(views.Embed), ".html")
engine.AddFunc("icon", assets.Svg)
app := fiber.New(fiber.Config{
Views: engine,
DisableStartupMessage: true,
})
app.Use(fiberlogrus.New())
app.Get("/", func(c *fiber.Ctx) error {
data := getCommon(c)
data["Title"] = i18n.Translate(c, "home")
return c.Render("index", data, "layouts/base")
})
app.Get("/blog", func(c *fiber.Ctx) error {
data := getCommon(c)
data["Title"] = i18n.Translate(c, "blog")
return c.Render("blog", data, "layouts/base")
})
app.Get("/projects", func(c *fiber.Ctx) error {
data := getCommon(c)
data["Title"] = i18n.Translate(c, "projects")
return c.Render("projects", data, "layouts/base")
})
app.Get("/about", func(c *fiber.Ctx) error {
data := getCommon(c)
data["Title"] = i18n.Translate(c, "about")
return c.Render("about", data, "layouts/base")
})
app.Get("/settings", func(c *fiber.Ctx) error {
lang := c.Query("lang")
redirectURL := c.Query("redirect")
if lang != "" {
c.Cookie(&fiber.Cookie{
Name: "language",
Value: lang,
Secure: false,
})
}
if redirectURL != "" {
return c.Redirect(redirectURL)
}
return nil
})
app.Use("/static", filesystem.New(filesystem.Config{
Root: http.FS(static.Embed),
}))
app.Use(func(c *fiber.Ctx) error {
data := getCommon(c)
return c.Render("404", data, "layouts/base")
})
log.Fatal(app.Listen(":3000"))
}
func getCommon(c *fiber.Ctx) fiber.Map {
return fiber.Map{
"Path": c.Path(),
"Language": i18n.GetLanguage(c),
"T": i18n.GetTranslations(i18n.GetLanguage(c)),
}
}