2015-08-10 17:27:25 +00:00
|
|
|
package logical
|
|
|
|
|
|
|
|
type HTTPCodedError interface {
|
2016-08-19 20:48:32 +00:00
|
|
|
Error() string
|
|
|
|
Code() int
|
2015-08-10 17:27:25 +00:00
|
|
|
}
|
|
|
|
|
2017-10-19 20:29:59 +00:00
|
|
|
func CodedError(status int, msg string) HTTPCodedError {
|
|
|
|
return &codedError{
|
|
|
|
Status: status,
|
|
|
|
Message: msg,
|
|
|
|
}
|
2015-08-10 17:27:25 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
type codedError struct {
|
2017-10-19 20:29:59 +00:00
|
|
|
Status int
|
|
|
|
Message string
|
2015-08-10 17:27:25 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (e *codedError) Error() string {
|
2017-10-19 20:29:59 +00:00
|
|
|
return e.Message
|
2015-08-10 17:27:25 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (e *codedError) Code() int {
|
2017-10-19 20:29:59 +00:00
|
|
|
return e.Status
|
2015-08-10 17:27:25 +00:00
|
|
|
}
|
2017-02-16 20:15:02 +00:00
|
|
|
|
|
|
|
// Struct to identify user input errors. This is helpful in responding the
|
|
|
|
// appropriate status codes to clients from the HTTP endpoints.
|
|
|
|
type StatusBadRequest struct {
|
|
|
|
Err string
|
|
|
|
}
|
|
|
|
|
|
|
|
// Implementing error interface
|
|
|
|
func (s *StatusBadRequest) Error() string {
|
|
|
|
return s.Err
|
|
|
|
}
|
|
|
|
|
|
|
|
// This is a new type declared to not cause potential compatibility problems if
|
2017-10-19 20:29:59 +00:00
|
|
|
// the logic around the CodedError changes; in particular for logical request
|
|
|
|
// paths it is basically ignored, and changing that behavior might cause
|
|
|
|
// unforseen issues.
|
2017-02-16 20:15:02 +00:00
|
|
|
type ReplicationCodedError struct {
|
|
|
|
Msg string
|
|
|
|
Code int
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *ReplicationCodedError) Error() string {
|
|
|
|
return r.Msg
|
|
|
|
}
|