traefik/vendor/github.com/timewasted/linode/errors.go
2017-03-09 13:13:02 +01:00

74 lines
1.6 KiB
Go

package linode
const (
ERR_OK = 0
ERR_BAD_REQUEST = 1
ERR_NO_ACTION_REQUESTED = 2
ERR_CLASS_DOES_NOT_EXIST = 3
ERR_AUTHENTICATION_FAILED = 4
ERR_OBJECT_NOT_FOUND = 5
ERR_REQUIRED_PROPERTY_MISSING = 6
ERR_INVALID_PROPERTY = 7
ERR_DATA_VALIDATION_FAILED = 8
ERR_METHOD_NOT_IMPLEMENTED = 9
ERR_TOO_MANY_BATCHED_REQUESTS = 10
ERR_REQUEST_INVALID_JSON = 11
ERR_BATCH_TIMED_OUT = 12
ERR_PERMISSION_DENIED = 13
ERR_API_RATE_LIMIT_EXCEEDED = 14
ERR_CREDIT_CARD_CHARGE_FAILED = 30
ERR_CREDIT_CARD_EXPIRED = 31
ERR_LINODES_PER_HOUR_LIMIT_EXCEEDED = 40
ERR_LINODE_STILL_HAS_DISKS = 41
)
type (
// apiError represents an error as returned by the API.
apiError struct {
code int
msg string
}
// Error represents an error, either API related or not.
Error struct {
apiError *apiError
Err error
}
)
// NewError returns an instance of Error which represents a non-API error.
func NewError(err error) *Error {
return &Error{
apiError: nil,
Err: err,
}
}
// NewApiError returns an instance of Error which represents an API error.
func NewApiError(code int, msg string) *Error {
return &Error{
apiError: &apiError{
code: code,
msg: msg,
},
Err: nil,
}
}
// Error implements the Error() method of the error interface.
func (e *Error) Error() string {
if e.apiError != nil {
return e.apiError.msg
}
if e.Err == nil {
return ""
}
return e.Err.Error()
}
// IsApiError returns true if the error is an API error, or false otherwise.
func (e *Error) IsApiError() bool {
return e.apiError != nil
}