106 lines
1.5 KiB
Go
106 lines
1.5 KiB
Go
package resp
|
|
|
|
import (
|
|
"errors"
|
|
"github.com/gofiber/fiber/v3"
|
|
)
|
|
|
|
type res struct {
|
|
Status int `json:"status"`
|
|
Msg string `json:"msg"`
|
|
Data any `json:"data"`
|
|
Err any `json:"err"`
|
|
}
|
|
|
|
func R200(c fiber.Ctx, data any, msgs ...string) error {
|
|
r := &res{
|
|
Status: 200,
|
|
Msg: Msg200,
|
|
Data: data,
|
|
}
|
|
|
|
if len(msgs) > 0 && msgs[0] != "" {
|
|
r.Msg = msgs[0]
|
|
}
|
|
|
|
return c.JSON(r)
|
|
}
|
|
|
|
func RC(c fiber.Ctx, status int, args ...any) error {
|
|
return _r(c, &res{Status: status}, args...)
|
|
}
|
|
|
|
func RE(c fiber.Ctx, err error) error {
|
|
var re *Error
|
|
|
|
if errors.As(err, &re) {
|
|
return _r(c, re._r())
|
|
}
|
|
|
|
return R500(c, "", nil, err)
|
|
}
|
|
|
|
func _r(c fiber.Ctx, r *res, args ...any) error {
|
|
length := len(args)
|
|
switch length {
|
|
case 0:
|
|
break
|
|
case 1:
|
|
if msg, ok := args[0].(string); ok {
|
|
r.Msg = msg
|
|
} else {
|
|
r.Data = args[0]
|
|
}
|
|
case 2:
|
|
r.Data = args[1]
|
|
case 3:
|
|
r.Err = args[2]
|
|
}
|
|
|
|
if r.Msg == "" {
|
|
r.Msg = Msg(r.Status)
|
|
}
|
|
|
|
return c.Status(r.Status).JSON(r)
|
|
}
|
|
|
|
func R400(c fiber.Ctx, args ...any) error {
|
|
r := &res{
|
|
Status: 400,
|
|
}
|
|
|
|
return _r(c, r, args...)
|
|
}
|
|
|
|
func R401(c fiber.Ctx, args ...any) error {
|
|
r := &res{
|
|
Status: 401,
|
|
}
|
|
|
|
return _r(c, r, args...)
|
|
}
|
|
|
|
func R403(c fiber.Ctx, args ...any) error {
|
|
r := &res{
|
|
Status: 403,
|
|
}
|
|
|
|
return _r(c, r, args...)
|
|
}
|
|
|
|
func R500(c fiber.Ctx, args ...any) error {
|
|
r := &res{
|
|
Status: 500,
|
|
}
|
|
|
|
return _r(c, r, args...)
|
|
}
|
|
|
|
func R501(c fiber.Ctx, args ...any) error {
|
|
r := &res{
|
|
Status: 501,
|
|
}
|
|
|
|
return _r(c, r, args...)
|
|
}
|