github.com/status-im/status-go@v1.1.0/services/wallet/router/pathprocessor/errors.go (about) 1 package pathprocessor 2 3 import ( 4 "context" 5 6 "github.com/status-im/status-go/errors" 7 ) 8 9 // Abbreviartion `WPP` for the error code stands for `Wallet Path Processor` 10 var ( 11 ErrFailedToParseBaseFee = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-001"), Details: "failed to parse base fee"} 12 ErrFailedToParsePercentageFee = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-002"), Details: "failed to parse percentage fee"} 13 ErrContractNotFound = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-003"), Details: "contract not found"} 14 ErrNetworkNotFound = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-004"), Details: "network not found"} 15 ErrTokenNotFound = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-005"), Details: "token not found"} 16 ErrNoEstimationFound = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-006"), Details: "no estimation found"} 17 ErrNotAvailableForContractType = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-007"), Details: "not available for contract type"} 18 ErrNoBonderFeeFound = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-008"), Details: "no bonder fee found"} 19 ErrContractTypeNotSupported = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-009"), Details: "contract type not supported"} 20 ErrFromChainNotSupported = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-010"), Details: "from chain not supported"} 21 ErrToChainNotSupported = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-011"), Details: "to chain not supported"} 22 ErrTxForChainNotSupported = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-012"), Details: "tx for chain not supported"} 23 ErrENSResolverNotFound = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-013"), Details: "ENS resolver not found"} 24 ErrENSRegistrarNotFound = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-014"), Details: "ENS registrar not found"} 25 ErrToAndFromTokensMustBeSet = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-015"), Details: "to and from tokens must be set"} 26 ErrCannotResolveTokens = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-016"), Details: "cannot resolve tokens"} 27 ErrPriceRouteNotFound = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-017"), Details: "price route not found"} 28 ErrConvertingAmountToBigInt = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-018"), Details: "converting amount to big.Int"} 29 ErrNoChainSet = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-019"), Details: "no chain set"} 30 ErrNoTokenSet = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-020"), Details: "no token set"} 31 ErrToTokenShouldNotBeSet = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-021"), Details: "to token should not be set"} 32 ErrFromAndToChainsMustBeDifferent = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-022"), Details: "from and to chains must be different"} 33 ErrFromAndToChainsMustBeSame = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-023"), Details: "from and to chains must be same"} 34 ErrFromAndToTokensMustBeDifferent = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-024"), Details: "from and to tokens must be different"} 35 ErrTransferCustomError = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-025"), Details: "Transfer custom error"} 36 ErrERC721TransferCustomError = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-026"), Details: "ERC721Transfer custom error"} 37 ErrERC1155TransferCustomError = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-027"), Details: "ERC1155Transfer custom error"} 38 ErrBridgeHopCustomError = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-028"), Details: "Hop custom error"} 39 ErrBridgeCellerCustomError = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-029"), Details: "CBridge custom error"} 40 ErrSwapParaswapCustomError = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-030"), Details: "Paraswap custom error"} 41 ErrENSRegisterCustomError = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-031"), Details: "ENSRegister custom error"} 42 ErrENSReleaseCustomError = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-032"), Details: "ENSRelease custom error"} 43 ErrENSPublicKeyCustomError = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-033"), Details: "ENSPublicKey custom error"} 44 ErrStickersBuyCustomError = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-034"), Details: "StickersBuy custom error"} 45 ErrContextCancelled = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-035"), Details: "context cancelled"} 46 ErrContextDeadlineExceeded = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-036"), Details: "context deadline exceeded"} 47 ErrPriceTimeout = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-037"), Details: "price timeout"} 48 ErrNotEnoughLiquidity = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-038"), Details: "not enough liquidity"} 49 ErrPriceImpactTooHigh = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-039"), Details: "price impact too high"} 50 ) 51 52 func createErrorResponse(processorName string, err error) error { 53 if err == nil { 54 return nil 55 } 56 57 genericErrResp := errors.CreateErrorResponseFromError(err).(*errors.ErrorResponse) 58 59 if genericErrResp.Code != errors.GenericErrorCode { 60 return genericErrResp 61 } 62 63 switch genericErrResp.Details { 64 case context.Canceled.Error(): 65 return ErrContextCancelled 66 case context.DeadlineExceeded.Error(): 67 return ErrContextDeadlineExceeded 68 } 69 70 var customErrResp *errors.ErrorResponse 71 switch processorName { 72 case ProcessorTransferName: 73 customErrResp = ErrTransferCustomError 74 case ProcessorERC721Name: 75 customErrResp = ErrERC721TransferCustomError 76 case ProcessorERC1155Name: 77 customErrResp = ErrERC1155TransferCustomError 78 case ProcessorBridgeHopName: 79 customErrResp = ErrBridgeHopCustomError 80 case ProcessorBridgeCelerName: 81 customErrResp = ErrBridgeCellerCustomError 82 case ProcessorSwapParaswapName: 83 customErrResp = ErrSwapParaswapCustomError 84 case ProcessorENSRegisterName: 85 customErrResp = ErrENSRegisterCustomError 86 case ProcessorENSReleaseName: 87 customErrResp = ErrENSReleaseCustomError 88 case ProcessorENSPublicKeyName: 89 customErrResp = ErrENSPublicKeyCustomError 90 case ProcessorStickersBuyName: 91 customErrResp = ErrStickersBuyCustomError 92 default: 93 return genericErrResp 94 } 95 96 customErrResp.Details = genericErrResp.Details 97 return customErrResp 98 } 99 100 func IsCustomError(err error) bool { 101 if err == nil { 102 return false 103 } 104 105 errResp, ok := err.(*errors.ErrorResponse) 106 if !ok { 107 return false 108 } 109 110 switch errResp { 111 case ErrTransferCustomError, 112 ErrERC721TransferCustomError, 113 ErrERC1155TransferCustomError, 114 ErrBridgeHopCustomError, 115 ErrBridgeCellerCustomError, 116 ErrSwapParaswapCustomError, 117 ErrENSRegisterCustomError, 118 ErrENSReleaseCustomError, 119 ErrENSPublicKeyCustomError, 120 ErrStickersBuyCustomError: 121 return true 122 default: 123 return false 124 } 125 }