-
Notifications
You must be signed in to change notification settings - Fork 0
/
errors.go
134 lines (108 loc) · 2.73 KB
/
errors.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*
Nging is a toolbox for webmasters
Copyright (C) 2018-present Wenhui Shen <swh@admpub.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package common
import (
"encoding/gob"
"errors"
)
func init() {
gob.Register(&Success{})
}
var (
// - JSON
//ErrUserNotLoggedIn 用户未登录
ErrUserNotLoggedIn = errors.New(`User not logged in`)
//ErrUserNotFound 用户不存在
ErrUserNotFound = errors.New(`User does not exist`)
//ErrUserNoPerm 用户无权限
ErrUserNoPerm = errors.New(`User has no permission`)
//ErrUserDisabled 用户已被禁用
ErrUserDisabled = errors.New(`User has been disabled`)
// - Watcher
// ErrIgnoreConfigChange 忽略配置文件更改
ErrIgnoreConfigChange = errors.New(`Ingore file`)
)
// DefaultNopMessage 默认空消息
var DefaultNopMessage Messager = &NopMessage{}
// NopMessage 空消息
type NopMessage struct {
}
// Error 错误信息
func (n *NopMessage) Error() string {
return ``
}
// Success 成功信息
func (n *NopMessage) Success() string {
return ``
}
// String 信息字符串
func (n *NopMessage) String() string {
return ``
}
// Messager 信息接口
type Messager interface {
Successor
error
}
// IsMessage 判断err是否为Message
func IsMessage(err interface{}) bool {
_, y := err.(Messager)
return y
}
// Message 获取err中的信息接口
func Message(err interface{}) Messager {
if v, y := err.(Messager); y {
return v
}
return DefaultNopMessage
}
// NewOk 创建成功信息
func NewOk(v string) Successor {
return &Success{
Value: v,
}
}
// Success 成功信息
type Success struct {
Value string
}
// Success 成功信息
func (s *Success) Success() string {
return s.Value
}
func (s *Success) String() string {
return s.Value
}
// Successor 成功信息接口
type Successor interface {
Success() string
}
// IsError 是否是错误信息
func IsError(err interface{}) bool {
_, y := err.(error)
return y
}
// IsOk 是否是成功信息
func IsOk(err interface{}) bool {
_, y := err.(Successor)
return y
}
// OkString 获取成功信息
func OkString(err interface{}) string {
if v, y := err.(Successor); y {
return v.Success()
}
return ``
}