custom.go 616 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package cosy
  2. import (
  3. "github.com/0xJacky/Nginx-UI/internal/cosy/map2struct"
  4. "github.com/gin-gonic/gin"
  5. "net/http"
  6. )
  7. func (c *Ctx[T]) Custom(fx func(ctx *Ctx[T])) {
  8. if c.abort {
  9. return
  10. }
  11. errs := c.validate()
  12. if len(errs) > 0 {
  13. c.ctx.JSON(http.StatusNotAcceptable, gin.H{
  14. "message": "Requested with wrong parameters",
  15. "errors": errs,
  16. })
  17. return
  18. }
  19. c.beforeDecodeHook()
  20. for k := range c.Payload {
  21. c.SelectedFields = append(c.SelectedFields, k)
  22. }
  23. err := map2struct.WeakDecode(c.Payload, &c.Model)
  24. if err != nil {
  25. errHandler(c.ctx, err)
  26. return
  27. }
  28. c.beforeExecuteHook()
  29. fx(c)
  30. }