123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372 |
- package datahub
- import (
- "fmt"
- )
- /*
- examples errors
- */
- // Error codes
- const (
- InvalidParameter = "InvalidParameter"
- InvalidSubscription = "InvalidSubscription"
- InvalidCursor = "InvalidCursor"
- /**
- * for later arrange error code
- */
- ResourceNotFound = "ResourceNotFound"
- NoSuchTopic = "NoSuchTopic"
- NoSuchProject = "NoSuchProject"
- NoSuchSubscription = "NoSuchSubscription"
- NoSuchShard = "NoSuchShard"
- NoSuchConnector = "NoSuchConnector"
- NoSuchMeterInfo = "NoSuchMeteringInfo"
- /**
- * for later arrange error code
- */
- SeekOutOfRange = "SeekOutOfRange"
- ResourceAlreadyExist = "ResourceAlreadyExist"
- ProjectAlreadyExist = "ProjectAlreadyExist"
- TopicAlreadyExist = "TopicAlreadyExist"
- ConnectorAlreadyExist = "ConnectorAlreadyExist"
- UnAuthorized = "Unauthorized"
- NoPermission = "NoPermission"
- InvalidShardOperation = "InvalidShardOperation"
- OperatorDenied = "OperationDenied"
- LimitExceed = "LimitExceeded"
- //ODPSServiceError = "OdpsServiceError"
- //MysqlServiceError = "MysqlServiceError"
- //InternalServerErrorS = "InternalServerError"
- SubscriptionOffline = "SubscriptionOffline"
- OffsetReseted = "OffsetReseted"
- OffsetSessionClosed = "OffsetSessionClosed"
- OffsetSessionChanged = "OffsetSessionChanged"
- MalformedRecord = "MalformedRecord"
- NoSuchConsumer = "NoSuchConsumer"
- ConsumerGroupInProcess = "ConsumerGroupInProcess"
- )
- const (
- projectNameInvalid string = "project name should start with letter, only contains [a-zA-Z0-9_], 3 < length < 32"
- commentInvalid string = "comment can not be empty and length must less than 1024"
- topicNameInvalid string = "topic name should start with letter, only contains [a-zA-Z0-9_], 1 < length < 128"
- shardIdInvalid string = "shardId is invalid"
- shardListInvalid string = "shard list is empty"
- lifecycleInvalid string = "lifecycle is invalid"
- parameterInvalid string = "parameter is invalid"
- parameterNull string = "parameter is nil"
- parameterNumInvalid string = "parameter num invalid"
- parameterTypeInvalid string = "parameter type is invalid,please check your input parameter type"
- missingRecordSchema string = "missing record schema for tuple record type"
- recordsInvalid string = "records is invalid, nil, empty or other invalid reason"
- )
- // return the specific err type by errCode,
- // you can handle the error by type assert
- func errorHandler(statusCode int, requestId string, errorCode string, message string) error {
- switch errorCode {
- case InvalidParameter, InvalidSubscription, InvalidCursor:
- return NewInvalidParameterError(statusCode, requestId, errorCode, message)
- case ResourceNotFound, NoSuchTopic, NoSuchProject, NoSuchSubscription, NoSuchShard, NoSuchConnector,
- NoSuchMeterInfo, NoSuchConsumer:
- return NewResourceNotFoundError(statusCode, requestId, errorCode, message)
- case SeekOutOfRange:
- return NewSeekOutOfRangeError(statusCode, requestId, errorCode, message)
- case ResourceAlreadyExist, ProjectAlreadyExist, TopicAlreadyExist, ConnectorAlreadyExist:
- return NewResourceExistError(statusCode, requestId, errorCode, message)
- case UnAuthorized:
- return NewAuthorizationFailedError(statusCode, requestId, errorCode, message)
- case NoPermission:
- return NewNoPermissionError(statusCode, requestId, errorCode, message)
- case OperatorDenied:
- return NewInvalidOperationError(statusCode, requestId, errorCode, message)
- case LimitExceed:
- return NewLimitExceededError(statusCode, requestId, errorCode, message)
- case SubscriptionOffline:
- return NewSubscriptionOfflineError(statusCode, requestId, errorCode, message)
- case OffsetReseted:
- return NewSubscriptionOffsetResetError(statusCode, requestId, errorCode, message)
- case OffsetSessionClosed, OffsetSessionChanged:
- return NewSubscriptionSessionInvalidError(statusCode, requestId, errorCode, message)
- case MalformedRecord:
- return NewMalformedRecordError(statusCode, requestId, errorCode, message)
- case ConsumerGroupInProcess:
- return NewServiceInProcessError(statusCode, requestId, errorCode, message)
- case InvalidShardOperation:
- return NewShardSealedError(statusCode, requestId, errorCode, message)
- }
- return NewDatahubClientError(statusCode, requestId, errorCode, message)
- }
- // create a new DatahubClientError
- func NewDatahubClientError(statusCode int, requestId string, code string, message string) *DatahubClientError {
- return &DatahubClientError{StatusCode: statusCode, RequestId: requestId, Code: code, Message: message}
- }
- // DatahubError struct
- type DatahubClientError struct {
- StatusCode int `json:"StatusCode"` // Http status code
- RequestId string `json:"RequestId"` // Request-id to trace the request
- Code string `json:"ErrorCode"` // Datahub error code
- Message string `json:"ErrorMessage"` // Error msg of the error code
- }
- func (err *DatahubClientError) Error() string {
- return fmt.Sprintf("statusCode: %d, requestId: %s, errCode: %s, errMsg: %s",
- err.StatusCode, err.RequestId, err.Code, err.Message)
- }
- func NewInvalidParameterErrorWithMessage(message string) *InvalidParameterError {
- return &InvalidParameterError{
- DatahubClientError{
- StatusCode: -1,
- RequestId: "",
- Code: "",
- Message: message,
- },
- }
- }
- func NewInvalidParameterError(statusCode int, requestId string, code string, message string) *InvalidParameterError {
- return &InvalidParameterError{
- DatahubClientError{
- StatusCode: statusCode,
- RequestId: requestId,
- Code: code,
- Message: message,
- },
- }
- }
- // InvalidParameterError represent the parameter error
- type InvalidParameterError struct {
- DatahubClientError
- }
- func NewResourceNotFoundError(statusCode int, requestId string, code string, message string) *ResourceNotFoundError {
- return &ResourceNotFoundError{
- DatahubClientError{
- StatusCode: statusCode,
- RequestId: requestId,
- Code: code,
- Message: message,
- },
- }
- }
- type ResourceNotFoundError struct {
- DatahubClientError
- }
- func NewResourceExistError(statusCode int, requestId string, code string, message string) *ResourceExistError {
- return &ResourceExistError{
- DatahubClientError{
- StatusCode: statusCode,
- RequestId: requestId,
- Code: code,
- Message: message,
- },
- }
- }
- type ResourceExistError struct {
- DatahubClientError
- }
- func NewInvalidOperationError(statusCode int, requestId string, code string, message string) *InvalidOperationError {
- return &InvalidOperationError{
- DatahubClientError{
- StatusCode: statusCode,
- RequestId: requestId,
- Code: code,
- Message: message,
- },
- }
- }
- type InvalidOperationError struct {
- DatahubClientError
- }
- func NewLimitExceededError(statusCode int, requestId string, code string, message string) *LimitExceededError {
- return &LimitExceededError{
- DatahubClientError{
- StatusCode: statusCode,
- RequestId: requestId,
- Code: code,
- Message: message,
- },
- }
- }
- type LimitExceededError struct {
- DatahubClientError
- }
- func NewAuthorizationFailedError(statusCode int, requestId string, code string, message string) *AuthorizationFailedError {
- return &AuthorizationFailedError{
- DatahubClientError{
- StatusCode: statusCode,
- RequestId: requestId,
- Code: code,
- Message: message,
- },
- }
- }
- type AuthorizationFailedError struct {
- DatahubClientError
- }
- //func (afe *AuthorizationFailureError) Error() string {
- // return afe.DatahubClientError.Error()
- //}
- func NewNoPermissionError(statusCode int, requestId string, code string, message string) *NoPermissionError {
- return &NoPermissionError{
- DatahubClientError{
- StatusCode: statusCode,
- RequestId: requestId,
- Code: code,
- Message: message,
- },
- }
- }
- type NoPermissionError struct {
- DatahubClientError
- }
- func NewSeekOutOfRangeError(statusCode int, requestId string, code string, message string) *SeekOutOfRangeError {
- return &SeekOutOfRangeError{
- DatahubClientError{
- StatusCode: statusCode,
- RequestId: requestId,
- Code: code,
- Message: message,
- },
- }
- }
- type SeekOutOfRangeError struct {
- DatahubClientError
- }
- func NewSubscriptionOfflineError(statusCode int, requestId string, code string, message string) *SubscriptionOfflineError {
- return &SubscriptionOfflineError{
- DatahubClientError{
- StatusCode: statusCode,
- RequestId: requestId,
- Code: code,
- Message: message,
- },
- }
- }
- type SubscriptionOfflineError struct {
- DatahubClientError
- }
- func NewSubscriptionOffsetResetError(statusCode int, requestId string, code string, message string) *SubscriptionOffsetResetError {
- return &SubscriptionOffsetResetError{
- DatahubClientError{
- StatusCode: statusCode,
- RequestId: requestId,
- Code: code,
- Message: message,
- },
- }
- }
- type SubscriptionOffsetResetError struct {
- DatahubClientError
- }
- func NewSubscriptionSessionInvalidError(statusCode int, requestId string, code string, message string) *SubscriptionSessionInvalidError {
- return &SubscriptionSessionInvalidError{
- DatahubClientError{
- StatusCode: statusCode,
- RequestId: requestId,
- Code: code,
- Message: message,
- },
- }
- }
- type SubscriptionSessionInvalidError struct {
- DatahubClientError
- }
- func NewMalformedRecordError(statusCode int, requestId string, code string, message string) *MalformedRecordError {
- return &MalformedRecordError{
- DatahubClientError{
- StatusCode: statusCode,
- RequestId: requestId,
- Code: code,
- Message: message,
- },
- }
- }
- type MalformedRecordError struct {
- DatahubClientError
- }
- func NewServiceInProcessError(statusCode int, requestId string, code string, message string) *ServiceInProcessError {
- return &ServiceInProcessError{
- DatahubClientError{
- StatusCode: statusCode,
- RequestId: requestId,
- Code: code,
- Message: message,
- },
- }
- }
- type ServiceInProcessError struct {
- DatahubClientError
- }
- func NewShardSealedError(statusCode int, requestId string, code string, message string) *ShardSealedError {
- return &ShardSealedError{
- DatahubClientError{
- StatusCode: statusCode,
- RequestId: requestId,
- Code: code,
- Message: message,
- },
- }
- }
- type ShardSealedError struct {
- DatahubClientError
- }
- func NewServiceTemporaryUnavailableError(message string) *ServiceTemporaryUnavailableError {
- return &ServiceTemporaryUnavailableError{
- DatahubClientError{
- StatusCode: -1,
- RequestId: "",
- Code: "",
- Message: message,
- },
- }
- }
- func NewServiceTemporaryUnavailableErrorWithCode(statusCode int, requestId string, code string, message string) *ServiceTemporaryUnavailableError {
- return &ServiceTemporaryUnavailableError{
- DatahubClientError{
- StatusCode: statusCode,
- RequestId: requestId,
- Code: code,
- Message: message,
- },
- }
- }
- type ServiceTemporaryUnavailableError struct {
- DatahubClientError
- }
|