package handlers import "github.com/gofiber/fiber/v2" 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") }