57 lines
803 B
Go
57 lines
803 B
Go
package resp
|
|
|
|
import "net/http"
|
|
|
|
type Error struct {
|
|
Status int `json:"status"`
|
|
Msg string `json:"msg"`
|
|
Err error `json:"err"`
|
|
Data any `json:"data"`
|
|
}
|
|
|
|
func (e *Error) Error() string {
|
|
return e.Err.Error()
|
|
}
|
|
|
|
func (e *Error) _r() *res {
|
|
data := &res{
|
|
Status: e.Status,
|
|
Msg: e.Msg,
|
|
Data: e.Data,
|
|
Err: e.Err,
|
|
}
|
|
|
|
if data.Status < 0 || data.Status > 999 {
|
|
data.Status = 500
|
|
}
|
|
|
|
return data
|
|
}
|
|
|
|
func NewError(err error, args ...any) *Error {
|
|
e := &Error{
|
|
Status: http.StatusInternalServerError,
|
|
Err: err,
|
|
}
|
|
|
|
if len(args) > 0 {
|
|
if status, ok := args[0].(int); ok {
|
|
e.Status = status
|
|
}
|
|
}
|
|
|
|
e.Msg = Msg(e.Status)
|
|
|
|
if len(args) > 1 {
|
|
if msg, ok := args[1].(string); ok {
|
|
e.Msg = msg
|
|
}
|
|
}
|
|
|
|
if len(args) > 2 {
|
|
e.Data = args[2]
|
|
}
|
|
|
|
return e
|
|
}
|