mirror of
https://github.com/nabbar/golib.git
synced 2025-10-14 12:03:41 +08:00
72 lines
1.3 KiB
Go
72 lines
1.3 KiB
Go
package errors
|
|
|
|
import (
|
|
"encoding/json"
|
|
goErr "errors"
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
type ReturnError func(code int, msg string, file string, line int)
|
|
|
|
type Return interface {
|
|
SetError(code int, msg string, file string, line int)
|
|
AddParent(code int, msg string, file string, line int)
|
|
}
|
|
|
|
type DefaultReturn struct {
|
|
Code string
|
|
Message string
|
|
}
|
|
|
|
func NewDefaultReturn() *DefaultReturn {
|
|
return &DefaultReturn{
|
|
Code: "",
|
|
Message: "",
|
|
}
|
|
}
|
|
|
|
func (r *DefaultReturn) SetError(code int, msg string, file string, line int) {
|
|
r.Code = fmt.Sprintf("%d", code)
|
|
r.Message = msg
|
|
}
|
|
|
|
func (r *DefaultReturn) AddParent(code int, msg string, file string, line int) {
|
|
return
|
|
}
|
|
|
|
func (r DefaultReturn) JSON() []byte {
|
|
if str, err := json.Marshal(r); err != nil {
|
|
return make([]byte, 0)
|
|
} else {
|
|
return str
|
|
}
|
|
}
|
|
|
|
func (r DefaultReturn) GinTonicAbort(ctx *gin.Context, httpCode int) {
|
|
if ctx == nil || ctx.IsAborted() {
|
|
return
|
|
}
|
|
|
|
if httpCode == 0 {
|
|
httpCode = http.StatusInternalServerError
|
|
}
|
|
|
|
ctx.AbortWithStatusJSON(httpCode, r)
|
|
}
|
|
|
|
func (r DefaultReturn) GinTonicErrorAbort(ctx *gin.Context, httpCode int) {
|
|
if ctx == nil || ctx.IsAborted() {
|
|
return
|
|
}
|
|
|
|
ctx.Errors = append(ctx.Errors, &gin.Error{
|
|
Err: goErr.New(r.Message),
|
|
Type: gin.ErrorTypeAny,
|
|
})
|
|
|
|
r.GinTonicAbort(ctx, httpCode)
|
|
}
|