package handlers import "github.com/gofiber/fiber/v3" type mimeTypeHandler interface { CanHandle(c fiber.Ctx) bool Handle(c fiber.Ctx) error } type HTMX func(c fiber.Ctx) error func (h HTMX) CanHandle(c fiber.Ctx) bool { return c.Get("Hx-request") == "true" } func (h HTMX) Handle(c fiber.Ctx) error { return h(c) } type Otherwise func(c fiber.Ctx) error func (h Otherwise) CanHandle(c fiber.Ctx) bool { return true } func (h Otherwise) Handle(c fiber.Ctx) error { return h(c) } func Select(c fiber.Ctx, mimeTypes ...mimeTypeHandler) error { for _, mt := range mimeTypes { if mt.CanHandle(c) { return mt.Handle(c) } } return c.Status(fiber.StatusInternalServerError).SendString("cant handle response") }