Merge pull request #59 from suntong/master

Standardize error messages
This commit is contained in:
Ivy 2021-08-02 11:46:44 +08:00 committed by GitHub
commit 15aecd33dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 49 additions and 25 deletions

4
bot.go
View File

@ -139,7 +139,7 @@ func (b *Bot) Login() error {
b.ScanCallBack(resp.Raw) b.ScanCallBack(resp.Raw)
} }
case StatusTimeout: case StatusTimeout:
return errors.New("login time out") return ErrLoginTimeout
case StatusWait: case StatusWait:
continue continue
} }
@ -307,7 +307,7 @@ func (b *Bot) MessageOnError(h func(err error)) {
// DumpHotReloadStorage 写入HotReloadStorage // DumpHotReloadStorage 写入HotReloadStorage
func (b *Bot) DumpHotReloadStorage() error { func (b *Bot) DumpHotReloadStorage() error {
if b.HotReloadStorage == nil { if b.HotReloadStorage == nil {
return errors.New("HotReloadStorage can be nil") return errors.New("HotReloadStorage can not be nil")
} }
cookies := b.Caller.Client.GetCookieMap() cookies := b.Caller.Client.GetCookieMap()
item := HotReloadStorageItem{ item := HotReloadStorageItem{

View File

@ -84,8 +84,8 @@ func (c *Caller) GetLoginInfo(body []byte) (*LoginInfo, error) {
resp, err := c.Client.GetLoginInfo(path.String()) resp, err := c.Client.GetLoginInfo(path.String())
if err != nil { if err != nil {
uErr, ok := err.(*url.Error) uErr, ok := err.(*url.Error)
if ok && (uErr.Err.Error() == missLocationHeader.Error()) { if ok && (uErr.Err.Error() == ErrMissLocationHeader.Error()) {
return nil, loginForbiddenError return nil, ErrLoginForbiddenError
} }
return nil, err return nil, err
} }

View File

@ -116,9 +116,10 @@ const (
// errors // errors
var ( var (
noSuchUserFoundError = errors.New("no such user found") ErrNoSuchUserFoundError = errors.New("no such user found")
missLocationHeader = errors.New("301 response missing Location header") ErrMissLocationHeader = errors.New("301 response missing Location header")
loginForbiddenError = errors.New("login forbidden") ErrLoginForbiddenError = errors.New("login forbidden")
ErrLoginTimeout = errors.New("login timeout")
) )
// ALL 跟search函数搭配 // ALL 跟search函数搭配

View File

@ -20,6 +20,28 @@ type LoginInfo struct {
PassTicket string `xml:"pass_ticket"` PassTicket string `xml:"pass_ticket"`
} }
// errors
const (
errParamError = "param error"
errTicketError = "ticket error"
errLoginEnvError = "login env error"
errLoginFailedWarn = "failed login warn"
errLoginFailedCheck = "failed login check"
errCookieInvalidError = "cookie invalid error"
errOptTooOften = "opt too often"
)
var (
ErrParamError = errors.New(errParamError)
ErrTicketError = errors.New(errTicketError)
ErrLoginEnvError = errors.New(errLoginEnvError)
ErrLoginFailedWarn = errors.New(errLoginFailedWarn)
ErrLoginFailedCheck = errors.New(errLoginFailedCheck)
ErrCookieInvalidError = errors.New(errCookieInvalidError)
ErrOptTooOften = errors.New(errOptTooOften)
ErrBaseResponseError error
)
func (l LoginInfo) Ok() bool { func (l LoginInfo) Ok() bool {
return l.Ret == 0 return l.Ret == 0
} }
@ -57,21 +79,22 @@ func getResponseErrorWithRetCode(code int) error {
case 0: case 0:
return nil return nil
case 1: case 1:
return errors.New("param error") return ErrParamError
case -14: case -14:
return errors.New("ticket error") return ErrTicketError
case 1100: case 1100:
return errors.New("not login warn") return ErrLoginFailedWarn
case 1101: case 1101:
return errors.New("not login check") return ErrLoginFailedCheck
case 1102: case 1102:
return errors.New("cookie invalid error") return ErrCookieInvalidError
case 1203: case 1203:
return errors.New("login env error") return ErrLoginEnvError
case 1205: case 1205:
return errors.New("opt too often") return ErrOptTooOften
default: default:
return fmt.Errorf("base response ret code %d", code) ErrBaseResponseError = fmt.Errorf("base response ret code %d", code)
return ErrBaseResponseError
} }
} }
@ -147,19 +170,19 @@ func (s *SyncCheckResponse) Error() string {
case "0": case "0":
return "" return ""
case "1": case "1":
return "param error" return errParamError
case "-14": case "-14":
return "ticker error" return errTicketError
case "1100": case "1100":
return "not login warn" return errLoginFailedWarn
case "1101": case "1101":
return "not login check" return errLoginFailedCheck
case "1102": case "1102":
return "cookie invalid error" return errCookieInvalidError
case "1203": case "1203":
return "login env error" return errLoginEnvError
case "1205": case "1205":
return "opt too often" return errOptTooOften
default: default:
return fmt.Sprintf("sync check response error code %s", s.RetCode) return fmt.Sprintf("sync check response error code %s", s.RetCode)
} }

View File

@ -80,7 +80,7 @@ func (m *Message) SenderInGroup() (*User, error) {
} }
users := group.MemberList.SearchByUserName(1, m.senderInGroupUserName) users := group.MemberList.SearchByUserName(1, m.senderInGroupUserName)
if users == nil { if users == nil {
return nil, noSuchUserFoundError return nil, ErrNoSuchUserFoundError
} }
users.init(m.Bot.self) users.init(m.Bot.self)
return users.First(), nil return users.First(), nil
@ -94,14 +94,14 @@ func (m *Message) Receiver() (*User, error) {
} else { } else {
users := sender.MemberList.SearchByUserName(1, m.ToUserName) users := sender.MemberList.SearchByUserName(1, m.ToUserName)
if users == nil { if users == nil {
return nil, noSuchUserFoundError return nil, ErrNoSuchUserFoundError
} }
return users.First(), nil return users.First(), nil
} }
} else { } else {
users := m.Bot.self.MemberList.SearchByUserName(1, m.ToUserName) users := m.Bot.self.MemberList.SearchByUserName(1, m.ToUserName)
if users == nil { if users == nil {
return nil, noSuchUserFoundError return nil, ErrNoSuchUserFoundError
} }
return users.First(), nil return users.First(), nil
} }