mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2025-12-28 16:48:30 -05:00
90 lines
2.0 KiB
Go
90 lines
2.0 KiB
Go
package jmap
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
JmapErrorAuthenticationFailed = iota
|
|
JmapErrorInvalidHttpRequest
|
|
JmapErrorServerResponse
|
|
JmapErrorReadingResponseBody
|
|
JmapErrorDecodingResponseBody
|
|
JmapErrorEncodingRequestBody
|
|
JmapErrorCreatingRequest
|
|
JmapErrorSendingRequest
|
|
JmapErrorInvalidSessionResponse
|
|
JmapErrorInvalidJmapRequestPayload
|
|
JmapErrorInvalidJmapResponsePayload
|
|
JmapErrorSetError
|
|
JmapErrorTooManyMethodCalls
|
|
JmapErrorUnspecifiedType
|
|
JmapErrorServerUnavailable
|
|
JmapErrorServerFail
|
|
JmapErrorUnknownMethod
|
|
JmapErrorInvalidArguments
|
|
JmapErrorInvalidResultReference
|
|
JmapErrorForbidden
|
|
JmapErrorAccountNotFound
|
|
JmapErrorAccountNotSupportedByMethod
|
|
JmapErrorAccountReadOnly
|
|
JmapErrorFailedToEstablishWssConnection
|
|
JmapErrorWssConnectionResponseMissingJmapSubprotocol
|
|
JmapErrorWssFailedToSendWebSocketPushEnable
|
|
JmapErrorWssFailedToSendWebSocketPushDisable
|
|
JmapErrorWssFailedToClose
|
|
JmapErrorWssFailedToRetrieveSession
|
|
JmapErrorSocketPushUnsupported
|
|
JmapErrorMissingCreatedObject
|
|
)
|
|
|
|
var (
|
|
errTooManyMethodCalls = errors.New("the amount of methodCalls in the request body would exceed the maximum that is configured in the session")
|
|
)
|
|
|
|
type Error interface {
|
|
Code() int
|
|
error
|
|
}
|
|
|
|
type SimpleError struct {
|
|
code int
|
|
err error
|
|
}
|
|
|
|
var _ Error = &SimpleError{}
|
|
|
|
func (e SimpleError) Code() int {
|
|
return e.code
|
|
}
|
|
func (e SimpleError) Unwrap() error {
|
|
return e.err
|
|
}
|
|
func (e SimpleError) Error() string {
|
|
if e.err != nil {
|
|
return e.err.Error()
|
|
} else {
|
|
return ""
|
|
}
|
|
}
|
|
|
|
func simpleError(err error, code int) Error {
|
|
if err != nil {
|
|
return SimpleError{code: code, err: err}
|
|
} else {
|
|
return nil
|
|
}
|
|
}
|
|
|
|
func setErrorError(err SetError, objectType ObjectType) Error {
|
|
var e error
|
|
if len(err.Properties) > 0 {
|
|
e = fmt.Errorf("failed to modify %s due to %s error in properties [%s]: %s", objectType, err.Type, strings.Join(err.Properties, ", "), err.Description)
|
|
} else {
|
|
e = fmt.Errorf("failed to modify %s due to %s error: %s", objectType, err.Type, err.Description)
|
|
}
|
|
return SimpleError{code: JmapErrorSetError, err: e}
|
|
}
|