github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/common/errors.go (about)

     1  package common
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  
     7  	sdkerrors "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/errors"
     8  	abci "github.com/fibonacci-chain/fbc/libs/tendermint/abci/types"
     9  
    10  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
    11  )
    12  
    13  // const uint32
    14  const (
    15  	DefaultCodespace = "common"
    16  
    17  	CodeInternalError              uint32 = 60100
    18  	CodeInvalidPaginateParam       uint32 = 60101
    19  	CodeCreateAddrFromBech32Failed uint32 = 60102
    20  	CodeMarshalJSONFailed          uint32 = 60103
    21  	CodeUnMarshalJSONFailed        uint32 = 60104 //"incorrectly formatted request data", err.Error()
    22  	CodeStrconvFailed              uint32 = 60105
    23  	CodeUnknownProposalType        uint32 = 60106
    24  	CodeInsufficientCoins          uint32 = 60107
    25  	CodeMissingRequiredParam       uint32 = 60108
    26  	CodeInvalidParam               uint32 = 60109
    27  	CodeServerException            uint32 = 60110
    28  	CodeDataNotExist               uint32 = 60111
    29  	CodeCodecFails                 uint32 = 60112
    30  	CodeABCIQueryFails             uint32 = 60113
    31  	CodeArgsWithLimit              uint32 = 60114
    32  )
    33  
    34  type SDKError struct {
    35  	Codespace string `json:"codespace"`
    36  	Code      uint32 `json:"code"`
    37  	Message   string `json:"message"`
    38  }
    39  
    40  func ParseSDKError(errMsg string) SDKError {
    41  	var res abci.ResponseQuery
    42  	err := json.Unmarshal([]byte(errMsg), &res)
    43  	if err != nil {
    44  		return SDKError{
    45  			Codespace: DefaultCodespace,
    46  			Code:      CodeInternalError,
    47  			Message:   "query response unmarshal failed" + err.Error(),
    48  		}
    49  	}
    50  	return SDKError{
    51  		Codespace: res.Codespace,
    52  		Code:      res.Code,
    53  		Message:   res.Log,
    54  	}
    55  }
    56  
    57  func ErrInvalidParam(msg string) sdk.EnvelopedErr {
    58  	return sdk.EnvelopedErr{Err: sdkerrors.New(DefaultCodespace, CodeInvalidParam, msg)}
    59  }
    60  
    61  // invalid paginate param
    62  func ErrInvalidPaginateParam(page int, perPage int) sdk.EnvelopedErr {
    63  	return sdk.EnvelopedErr{Err: sdkerrors.New(DefaultCodespace, CodeInvalidPaginateParam, fmt.Sprintf("negative page %d or per_page %d is invalid", page, perPage))}
    64  }
    65  
    66  // invalid address
    67  func ErrCreateAddrFromBech32Failed(addr string, msg string) sdk.EnvelopedErr {
    68  	return sdk.EnvelopedErr{Err: sdkerrors.New(DefaultCodespace, CodeCreateAddrFromBech32Failed, fmt.Sprintf("invalid address:%s, reason: %s", addr, msg))}
    69  }
    70  
    71  // could not marshal result to JSON
    72  func ErrMarshalJSONFailed(msg string) sdk.EnvelopedErr {
    73  	return sdk.EnvelopedErr{Err: sdkerrors.New(DefaultCodespace, CodeMarshalJSONFailed, fmt.Sprintf("could not marshal result to JSON, %s", msg))}
    74  }
    75  
    76  // could not unmarshal result to origin
    77  func ErrUnMarshalJSONFailed(msg string) sdk.EnvelopedErr {
    78  	return sdk.EnvelopedErr{Err: sdkerrors.New(DefaultCodespace, CodeUnMarshalJSONFailed, fmt.Sprintf("incorrectly formatted request data, %s", msg))}
    79  }
    80  
    81  func ErrStrconvFailed(msg string) sdk.EnvelopedErr {
    82  	return sdk.EnvelopedErr{Err: sdkerrors.New(DefaultCodespace, CodeStrconvFailed, fmt.Sprintf("incorrect string conversion"))}
    83  }
    84  
    85  func ErrUnknownProposalType(codespace string, msg string) sdk.EnvelopedErr {
    86  	return sdk.EnvelopedErr{Err: sdkerrors.New(codespace, CodeUnknownProposalType, fmt.Sprintf("unknown proposal content type: %s", msg))}
    87  }
    88  
    89  func ErrInsufficientCoins(codespace string, msg string) sdk.EnvelopedErr {
    90  	return sdk.EnvelopedErr{sdkerrors.New(codespace, CodeInsufficientCoins, fmt.Sprintf("insufficient coins: %s", msg))}
    91  }