mirror of
https://gitee.com/dromara/mayfly-go
synced 2025-11-10 03:10:25 +08:00
100 lines
1.9 KiB
Go
100 lines
1.9 KiB
Go
|
|
package guac
|
||
|
|
|
||
|
|
import (
|
||
|
|
"fmt"
|
||
|
|
"strings"
|
||
|
|
)
|
||
|
|
|
||
|
|
type ErrGuac struct {
|
||
|
|
error
|
||
|
|
Status Status
|
||
|
|
Kind ErrKind
|
||
|
|
}
|
||
|
|
|
||
|
|
type ErrKind int
|
||
|
|
|
||
|
|
const (
|
||
|
|
ErrClientBadType ErrKind = iota
|
||
|
|
ErrClient
|
||
|
|
ErrClientOverrun
|
||
|
|
ErrClientTimeout
|
||
|
|
ErrClientTooMany
|
||
|
|
ErrConnectionClosed
|
||
|
|
ErrOther
|
||
|
|
ErrResourceClosed
|
||
|
|
ErrResourceConflict
|
||
|
|
ErrResourceNotFound
|
||
|
|
ErrSecurity
|
||
|
|
ErrServerBusy
|
||
|
|
ErrServer
|
||
|
|
ErrSessionClosed
|
||
|
|
ErrSessionConflict
|
||
|
|
ErrSessionTimeout
|
||
|
|
ErrUnauthorized
|
||
|
|
ErrUnsupported
|
||
|
|
ErrUpstream
|
||
|
|
ErrUpstreamNotFound
|
||
|
|
ErrUpstreamTimeout
|
||
|
|
ErrUpstreamUnavailable
|
||
|
|
)
|
||
|
|
|
||
|
|
// Status convert ErrKind to Status
|
||
|
|
func (e ErrKind) Status() (state Status) {
|
||
|
|
switch e {
|
||
|
|
case ErrClientBadType:
|
||
|
|
return ClientBadType
|
||
|
|
case ErrClient:
|
||
|
|
return ClientBadRequest
|
||
|
|
case ErrClientOverrun:
|
||
|
|
return ClientOverrun
|
||
|
|
case ErrClientTimeout:
|
||
|
|
return ClientTimeout
|
||
|
|
case ErrClientTooMany:
|
||
|
|
return ClientTooMany
|
||
|
|
case ErrConnectionClosed:
|
||
|
|
return ServerError
|
||
|
|
case ErrOther:
|
||
|
|
return ServerError
|
||
|
|
case ErrResourceClosed:
|
||
|
|
return ResourceClosed
|
||
|
|
case ErrResourceConflict:
|
||
|
|
return ResourceConflict
|
||
|
|
case ErrResourceNotFound:
|
||
|
|
return ResourceNotFound
|
||
|
|
case ErrSecurity:
|
||
|
|
return ClientForbidden
|
||
|
|
case ErrServerBusy:
|
||
|
|
return ServerBusy
|
||
|
|
case ErrServer:
|
||
|
|
return ServerError
|
||
|
|
case ErrSessionClosed:
|
||
|
|
return SessionClosed
|
||
|
|
case ErrSessionConflict:
|
||
|
|
return SessionConflict
|
||
|
|
case ErrSessionTimeout:
|
||
|
|
return SessionTimeout
|
||
|
|
case ErrUnauthorized:
|
||
|
|
return ClientUnauthorized
|
||
|
|
case ErrUnsupported:
|
||
|
|
return Unsupported
|
||
|
|
case ErrUpstream:
|
||
|
|
return UpstreamError
|
||
|
|
case ErrUpstreamNotFound:
|
||
|
|
return UpstreamNotFound
|
||
|
|
case ErrUpstreamTimeout:
|
||
|
|
return UpstreamTimeout
|
||
|
|
case ErrUpstreamUnavailable:
|
||
|
|
return UpstreamUnavailable
|
||
|
|
}
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
// NewError creates a new error struct instance with Kind and included message
|
||
|
|
func (e ErrKind) NewError(args ...string) error {
|
||
|
|
return &ErrGuac{
|
||
|
|
error: fmt.Errorf("%v", strings.Join(args, ", ")),
|
||
|
|
Status: e.Status(),
|
||
|
|
Kind: e,
|
||
|
|
}
|
||
|
|
}
|