Files
oneterm/backend/pkg/server/controller/errors.go
2024-03-04 18:40:04 +08:00

73 lines
1.7 KiB
Go

package controller
import (
"fmt"
"github.com/nicksnyder/go-i18n/v2/i18n"
myi18n "github.com/veops/oneterm/pkg/i18n"
)
const (
ErrBadRequest = 4000
ErrInvalidArgument = 4001
ErrDuplicateName = 4002
ErrHasChild = 4003
ErrHasDepency = 4004
ErrNoPerm = 4005
ErrRemoteClient = 4006
ErrWrongPk = 4007
ErrWrongMac = 4008
ErrInvalidSessionId = 4009
ErrLogin = 4010
ErrAccessTime = 4011
ErrInternal = 5000
ErrRemoteServer = 5001
ErrConnectServer = 5002
ErrLoadSession = 5003
)
var (
Err2Msg = map[int]*i18n.Message{
ErrBadRequest: myi18n.MsgBadRequest,
ErrInvalidArgument: myi18n.MsgInvalidArguemnt,
ErrDuplicateName: myi18n.MsgDupName,
ErrHasChild: myi18n.MsgHasChild,
ErrHasDepency: myi18n.MsgHasDepdency,
ErrNoPerm: myi18n.MsgNoPerm,
ErrRemoteClient: myi18n.MsgRemoteClient,
ErrWrongPk: myi18n.MsgWrongPk,
ErrInvalidSessionId: myi18n.MsgInvalidSessionId,
ErrInternal: myi18n.MsgInternalError,
ErrRemoteServer: myi18n.MsgRemoteServer,
ErrConnectServer: myi18n.MsgConnectServer,
ErrLoadSession: myi18n.MsgLoadSession,
ErrLogin: myi18n.MsgLoginError,
ErrAccessTime: myi18n.MsgAccessTime,
}
)
type ApiError struct {
Code int
Data map[string]any
}
func (ae *ApiError) Error() string {
return fmt.Sprintf("code=%d data=%v", ae.Code, ae.Data)
}
func (ae *ApiError) Message(localizer *i18n.Localizer) (msg string) {
cfg := &i18n.LocalizeConfig{}
cfg.TemplateData = ae.Data
m, ok := Err2Msg[ae.Code]
if !ok {
msg = ae.Error()
return
}
cfg.DefaultMessage = m
msg, _ = localizer.Localize(cfg)
return
}