snow/aid/fiber.go
Eccentric 250e85732d feat: update to latest;
new shop system
more config options
arena & hype
per season stats
battle pass
better variant system
complete vbuck & starter pack store
fix bugs related to deleting account
update launcher endpoints
fixed gift loot not deleting
2024-03-10 18:16:42 +00:00

62 lines
1.3 KiB
Go

package aid
import (
"slices"
"time"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/cors"
"github.com/gofiber/fiber/v2/middleware/limiter"
"github.com/gofiber/fiber/v2/middleware/logger"
)
func FiberLogger() fiber.Handler {
return logger.New(logger.Config{
Format: "(${method}) (${status}) (${latency}) ${path}\n",
Next: func(c *fiber.Ctx) bool {
if (slices.Contains[[]int](
[]int{302, 101},
c.Response().StatusCode(),
)) {
return true
}
if (slices.Contains[[]string](
[]string{"/snow/log", "/purchase/assets/", " /favicon.ico"},
c.Path(),
)) {
return true
}
return false
},
})
}
func FiberLimiter(n int) fiber.Handler {
return limiter.New(limiter.Config{
Max: n,
Expiration: 1 * time.Minute,
})
}
func FiberCors() fiber.Handler {
return cors.New(cors.Config{
AllowOrigins: "*",
AllowHeaders: "Origin, Content-Type, Accept, Authorization, X-Requested-With",
})
}
// https://github.com/gofiber/fiber/issues/510
func FiberGetQueries(c *fiber.Ctx, queryKeys ...string) map[string][]string {
argsMaps := make(map[string][]string)
for _, keys := range queryKeys {
param := c.Request().URI().QueryArgs().PeekMulti(keys)
for _, value := range param {
argsMaps[keys] = append(argsMaps[keys], string(value))
}
}
return argsMaps
}