tijl.dev-core/internal/apps/flags/main.go

88 lines
1.6 KiB
Go
Raw Permalink Normal View History

2024-08-25 17:43:55 +02:00
package flags
import (
"embed"
"encoding/json"
"git.tijl.dev/tijl/tijl.dev-core/modules/i18n"
log "git.tijl.dev/tijl/tijl.dev-core/modules/logger"
"git.tijl.dev/tijl/tijl.dev-core/modules/web"
"github.com/gofiber/fiber/v2"
)
var supportedTags []string
var countryCodes []CountryCode
type CountryCode struct {
Code string `json:"code"`
Tags []string `json:"tags"`
}
//go:embed locales/* data/*
var Embed embed.FS
func Setup() {
i18n.RegisterTranslations(Embed, "locales")
err := loadData()
if err != nil {
log.Error().Err(err).Msg("error loading country codes data file")
}
web.RegisterAppSetupFunc(func(a *fiber.App) {
a.Get("/app/flags", func(c *fiber.Ctx) error {
2024-08-26 14:22:24 +02:00
if c.Cookies("app_flags_game_session") != "" {
2024-08-26 21:49:37 +02:00
return questionHandler(c, NullableUUID{}, NullableString{})
2024-08-26 14:22:24 +02:00
} else {
2024-08-26 17:43:36 +02:00
return gameStartHandler(c)
2024-08-26 14:22:24 +02:00
}
2024-08-25 17:43:55 +02:00
})
2024-08-26 00:18:45 +02:00
a.Post("/app/flags", func(c *fiber.Ctx) error {
recType := c.FormValue("type")
2024-08-26 14:22:24 +02:00
switch recType {
case "start":
return startNewGameHandler(c)
case "answer":
2024-08-26 16:46:28 +02:00
return answerHandler(c)
case "exit":
2024-08-26 14:22:24 +02:00
return stopGameHandler(c)
2024-08-26 20:28:20 +02:00
case "shared":
return sharedGameHandler(c)
2024-08-26 00:18:45 +02:00
}
return nil
})
2024-08-25 17:43:55 +02:00
}, 1000)
}
func loadData() error {
countryCodesData, err := Embed.ReadFile("data/country_codes.json")
if err != nil {
return err
}
countryCodes = []CountryCode{}
err = json.Unmarshal(countryCodesData, &countryCodes)
if err != nil {
return err
}
tagsData, err := Embed.ReadFile("data/tags.json")
if err != nil {
return err
}
supportedTags = []string{}
err = json.Unmarshal(tagsData, &supportedTags)
if err != nil {
return err
}
return nil
}