mirror of
https://github.com/CJackHwang/ds2api.git
synced 2026-05-04 00:15:28 +08:00
47 lines
954 B
Go
47 lines
954 B
Go
package client
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
)
|
|
|
|
type FailureKind string
|
|
|
|
const (
|
|
FailureUnknown FailureKind = ""
|
|
FailureDirectUnauthorized FailureKind = "direct_unauthorized"
|
|
FailureManagedUnauthorized FailureKind = "managed_unauthorized"
|
|
)
|
|
|
|
type RequestFailure struct {
|
|
Op string
|
|
Kind FailureKind
|
|
Message string
|
|
}
|
|
|
|
func (e *RequestFailure) Error() string {
|
|
if e == nil {
|
|
return ""
|
|
}
|
|
switch {
|
|
case e.Op != "" && e.Message != "":
|
|
return fmt.Sprintf("%s: %s", e.Op, e.Message)
|
|
case e.Op != "":
|
|
return e.Op + " failed"
|
|
case e.Message != "":
|
|
return e.Message
|
|
default:
|
|
return "request failed"
|
|
}
|
|
}
|
|
|
|
func IsManagedUnauthorizedError(err error) bool {
|
|
var failure *RequestFailure
|
|
return errors.As(err, &failure) && failure.Kind == FailureManagedUnauthorized
|
|
}
|
|
|
|
func IsDirectUnauthorizedError(err error) bool {
|
|
var failure *RequestFailure
|
|
return errors.As(err, &failure) && failure.Kind == FailureDirectUnauthorized
|
|
}
|