first version
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
package errors
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"rpirelay/internal/response"
|
||||
)
|
||||
|
||||
var (
|
||||
ErrDataFormat = New(response.RespDataFormat)
|
||||
ErrUnauthorized = New(response.RespUnauthorized)
|
||||
ErrNotFound = New(response.RespNotFound)
|
||||
ErrInternalError = New(response.RespInternalError)
|
||||
ErrForbidden = New(response.RespForbidden)
|
||||
)
|
||||
|
||||
type APIError struct {
|
||||
code *response.MessageCode
|
||||
status response.RespType
|
||||
message string
|
||||
err error
|
||||
}
|
||||
|
||||
func (e *APIError) Error() string {
|
||||
s := fmt.Sprintf("Status: %s, Message: %s", e.status, e.message)
|
||||
if e.code != nil {
|
||||
c, m := response.GetCodeMessage(*e.code)
|
||||
s = fmt.Sprintf("%s, Code: %d, CodeMessage: %s", s, c, m)
|
||||
}
|
||||
if e.err != nil {
|
||||
s += fmt.Sprintf("\n%+v", e.err)
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
func (e *APIError) SetCode(code response.MessageCode) *APIError {
|
||||
e = &APIError{
|
||||
status: e.status,
|
||||
code: &code,
|
||||
message: e.message,
|
||||
err: e.err,
|
||||
}
|
||||
return e
|
||||
}
|
||||
|
||||
func (e *APIError) SetMessage(s string) *APIError {
|
||||
e = &APIError{
|
||||
status: e.status,
|
||||
code: e.code,
|
||||
message: s,
|
||||
err: e.err,
|
||||
}
|
||||
|
||||
return e
|
||||
}
|
||||
|
||||
func (e *APIError) SetErr(err error) *APIError {
|
||||
e = &APIError{
|
||||
status: e.status,
|
||||
code: e.code,
|
||||
message: e.message,
|
||||
err: err,
|
||||
}
|
||||
|
||||
return e
|
||||
}
|
||||
|
||||
func (e *APIError) Code() *response.MessageCode { return e.code }
|
||||
func (e *APIError) Status() response.RespType { return e.status }
|
||||
|
||||
func New(status response.RespType, code ...response.MessageCode) *APIError {
|
||||
e := &APIError{
|
||||
status: status,
|
||||
}
|
||||
|
||||
if len(code) > 0 {
|
||||
e.code = &code[0]
|
||||
}
|
||||
return e
|
||||
}
|
||||
Reference in New Issue
Block a user