Skip to content

Commit

Permalink
Further simplifying validation logic for generated structs (#12)
Browse files Browse the repository at this point in the history
  • Loading branch information
Tanz0rz authored Feb 2, 2024
1 parent 60bd0dc commit 89b8da5
Show file tree
Hide file tree
Showing 11 changed files with 249 additions and 298 deletions.
64 changes: 32 additions & 32 deletions golang/client/orderbook/orderbook_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@ type CreateOrderParams struct {

func (params *CreateOrderParams) Validate() error {
var validationErrors []error
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.ChainID, validationErrors)
validationErrors = validate.Parameter(params.WalletKey, "walletKey", validate.PrivateKey, validationErrors)
validationErrors = validate.Parameter(params.SourceWallet, "sourceWallet", validate.EthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.FromToken, "fromToken", validate.EthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.ToToken, "toToken", validate.EthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.TakingAmount, "takingAmount", validate.BigInt, validationErrors)
validationErrors = validate.Parameter(params.MakingAmount, "makingAmount", validate.BigInt, validationErrors)
validationErrors = validate.Parameter(params.Receiver, "receiver", validate.EthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.CheckChainId, validationErrors)
validationErrors = validate.Parameter(params.WalletKey, "walletKey", validate.CheckPrivateKey, validationErrors)
validationErrors = validate.Parameter(params.SourceWallet, "sourceWallet", validate.CheckEthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.FromToken, "fromToken", validate.CheckEthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.ToToken, "toToken", validate.CheckEthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.TakingAmount, "takingAmount", validate.CheckBigInt, validationErrors)
validationErrors = validate.Parameter(params.MakingAmount, "makingAmount", validate.CheckBigInt, validationErrors)
validationErrors = validate.Parameter(params.Receiver, "receiver", validate.CheckEthereumAddress, validationErrors)
return validate.ConsolidateValidationErorrs(validationErrors)
}

Expand All @@ -35,14 +35,14 @@ type GetOrdersByCreatorAddressParams struct {

func (params *GetOrdersByCreatorAddressParams) Validate() error {
var validationErrors []error
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.ChainID, validationErrors)
validationErrors = validate.Parameter(params.CreatorAddress, "creatorAddress", validate.EthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.Page, "page", validate.PagePointer, validationErrors)
validationErrors = validate.Parameter(params.Limit, "limit", validate.LimitPointer, validationErrors)
validationErrors = validate.Parameter(params.Statuses, "statuses", validate.StatusesIntsPointer, validationErrors)
validationErrors = validate.Parameter((*string)(params.SortBy), "sortBy", validate.SortByPointer, validationErrors)
validationErrors = validate.Parameter(params.TakerAsset, "takerAsset", validate.EthereumAddressPointer, validationErrors)
validationErrors = validate.Parameter(params.MakerAsset, "makerAsset", validate.EthereumAddressPointer, validationErrors)
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.CheckChainId, validationErrors)
validationErrors = validate.Parameter(params.CreatorAddress, "creatorAddress", validate.CheckEthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.Page, "page", validate.CheckPagePointer, validationErrors)
validationErrors = validate.Parameter(params.Limit, "limit", validate.CheckLimitPointer, validationErrors)
validationErrors = validate.Parameter(params.Statuses, "statuses", validate.CheckStatusesIntsPointer, validationErrors)
validationErrors = validate.Parameter((*string)(params.SortBy), "sortBy", validate.CheckSortByPointer, validationErrors)
validationErrors = validate.Parameter(params.TakerAsset, "takerAsset", validate.CheckEthereumAddressPointer, validationErrors)
validationErrors = validate.Parameter(params.MakerAsset, "makerAsset", validate.CheckEthereumAddressPointer, validationErrors)
return validate.ConsolidateValidationErorrs(validationErrors)
}

Expand All @@ -53,13 +53,13 @@ type GetAllOrdersParams struct {

func (params *GetAllOrdersParams) Validate() error {
var validationErrors []error
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.ChainID, validationErrors)
validationErrors = validate.Parameter(params.Page, "page", validate.PagePointer, validationErrors)
validationErrors = validate.Parameter(params.Limit, "limit", validate.LimitPointer, validationErrors)
validationErrors = validate.Parameter(params.Statuses, "statuses", validate.StatusesIntsPointer, validationErrors)
validationErrors = validate.Parameter((*string)(params.SortBy), "sortBy", validate.SortByPointer, validationErrors)
validationErrors = validate.Parameter(params.TakerAsset, "takerAsset", validate.EthereumAddressPointer, validationErrors)
validationErrors = validate.Parameter(params.MakerAsset, "makerAsset", validate.EthereumAddressPointer, validationErrors)
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.CheckChainId, validationErrors)
validationErrors = validate.Parameter(params.Page, "page", validate.CheckPagePointer, validationErrors)
validationErrors = validate.Parameter(params.Limit, "limit", validate.CheckLimitPointer, validationErrors)
validationErrors = validate.Parameter(params.Statuses, "statuses", validate.CheckStatusesIntsPointer, validationErrors)
validationErrors = validate.Parameter((*string)(params.SortBy), "sortBy", validate.CheckSortByPointer, validationErrors)
validationErrors = validate.Parameter(params.TakerAsset, "takerAsset", validate.CheckEthereumAddressPointer, validationErrors)
validationErrors = validate.Parameter(params.MakerAsset, "makerAsset", validate.CheckEthereumAddressPointer, validationErrors)
return validate.ConsolidateValidationErorrs(validationErrors)
}

Expand All @@ -70,8 +70,8 @@ type GetCountParams struct {

func (params *GetCountParams) Validate() error {
var validationErrors []error
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.ChainID, validationErrors)
validationErrors = validate.Parameter(params.Statuses, "statuses", validate.StatusesStrings, validationErrors)
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.CheckChainId, validationErrors)
validationErrors = validate.Parameter(params.Statuses, "statuses", validate.CheckStatusesStrings, validationErrors)
return validate.ConsolidateValidationErorrs(validationErrors)
}

Expand All @@ -82,8 +82,8 @@ type GetEventParams struct {

func (params *GetEventParams) Validate() error { // TODO Find validation criteria for OrderHash
var validationErrors []error
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.ChainID, validationErrors)
validationErrors = validate.Parameter(params.OrderHash, "orderHash", validate.OrderHash, validationErrors)
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.CheckChainId, validationErrors)
validationErrors = validate.Parameter(params.OrderHash, "orderHash", validate.CheckOrderHash, validationErrors)
return validate.ConsolidateValidationErorrs(validationErrors)
}

Expand All @@ -94,8 +94,8 @@ type GetEventsParams struct {

func (params *GetEventsParams) Validate() error {
var validationErrors []error
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.ChainID, validationErrors)
validationErrors = validate.Parameter(params.Limit, "limit", validate.Limit, validationErrors)
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.CheckChainId, validationErrors)
validationErrors = validate.Parameter(params.Limit, "limit", validate.CheckLimit, validationErrors)
return validate.ConsolidateValidationErorrs(validationErrors)
}

Expand All @@ -107,8 +107,8 @@ type GetActiveOrdersWithPermitParams struct {

func (params *GetActiveOrdersWithPermitParams) Validate() error {
var validationErrors []error
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.ChainID, validationErrors)
validationErrors = validate.Parameter(params.Wallet, "wallet", validate.PrivateKey, validationErrors)
validationErrors = validate.Parameter(params.Token, "token", validate.EthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.CheckChainId, validationErrors)
validationErrors = validate.Parameter(params.Wallet, "wallet", validate.CheckPrivateKey, validationErrors)
validationErrors = validate.Parameter(params.Token, "token", validate.CheckEthereumAddress, validationErrors)
return validate.ConsolidateValidationErorrs(validationErrors)
}
2 changes: 1 addition & 1 deletion golang/client/orderbook/orderbook_types_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ func TestGetEventsParams_Validate(t *testing.T) {
params: GetEventsParams{},
expectErrors: []string{
"'chainId' is required",
"'limit' is required",
"'limit': must be greater than 0", // TODO is this what I want to check here?
},
},
}
Expand Down
10 changes: 5 additions & 5 deletions golang/client/orderbook_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ func TestGetOrdersByCreatorAddress(t *testing.T) {
Statuses: &[]float32{0, 2},
},
},
expectedErrorDescription: `'statuses': can only contain 1, 2, and/or 3`,
expectedErrorDescription: `'statuses': can only contain [1 2 3]`,
},
{
description: "Error - Invalid sortBy",
Expand All @@ -205,7 +205,7 @@ func TestGetOrdersByCreatorAddress(t *testing.T) {
SortBy: orderbook.GetSortByParameter("invalid"),
},
},
expectedErrorDescription: `'sortBy': can only contain createDateTime, takerRate, makerRate, makerAmount, or takerAmount`,
expectedErrorDescription: `'sortBy': can only contain [createDateTime takerRate makerRate makerAmount takerAmount]`,
},
{
description: "Error - Invalid takerAsset",
Expand Down Expand Up @@ -320,7 +320,7 @@ func TestGetAllOrders(t *testing.T) {
Statuses: &[]float32{0, 2},
},
},
expectedErrorDescription: `'statuses': can only contain 1, 2, and/or 3`,
expectedErrorDescription: `'statuses': can only contain [1 2 3]`,
},
{
description: "Error - Invalid sortBy",
Expand All @@ -332,7 +332,7 @@ func TestGetAllOrders(t *testing.T) {
SortBy: orderbook.GetSortByParameter("invalid"),
},
},
expectedErrorDescription: `'sortBy': can only contain createDateTime, takerRate, makerRate, makerAmount, or takerAmount`,
expectedErrorDescription: `'sortBy': can only contain [createDateTime takerRate makerRate makerAmount takerAmount]`,
},
{
description: "Error - Invalid takerAsset",
Expand Down Expand Up @@ -430,7 +430,7 @@ func TestGetCount(t *testing.T) {
Statuses: []string{"4"},
},
},
expectedErrorDescription: `'statuses': can only contain 1, 2, and/or 3`,
expectedErrorDescription: `'statuses': can only contain [1 2 3]`,
},
}

Expand Down
56 changes: 28 additions & 28 deletions golang/client/swap/swap_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ type SwapTokensParams struct {

func (params *SwapTokensParams) Validate() error {
var validationErrors []error
validationErrors = validate.Parameter(int(params.ApprovalType), "approvalType", validate.ApprovalType, validationErrors)
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.ChainID, validationErrors)
validationErrors = validate.Parameter(params.PublicAddress, "publicAddress", validate.EthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.WalletKey, "walletKey", validate.PrivateKey, validationErrors)
validationErrors = validate.Parameter(params.Src, "src", validate.EthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.Dst, "dst", validate.EthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.Amount, "amount", validate.BigInt, validationErrors)
validationErrors = validate.Parameter(params.From, "from", validate.EthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.Slippage, "slippage", validate.Slippage, validationErrors)
validationErrors = validate.Parameter(int(params.ApprovalType), "approvalType", validate.CheckApprovalType, validationErrors)
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.CheckChainId, validationErrors)
validationErrors = validate.Parameter(params.PublicAddress, "publicAddress", validate.CheckEthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.WalletKey, "walletKey", validate.CheckPrivateKey, validationErrors)
validationErrors = validate.Parameter(params.Src, "src", validate.CheckEthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.Dst, "dst", validate.CheckEthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.Amount, "amount", validate.CheckBigInt, validationErrors)
validationErrors = validate.Parameter(params.From, "from", validate.CheckEthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.Slippage, "slippage", validate.CheckSlippage, validationErrors)
return validate.ConsolidateValidationErorrs(validationErrors)
}

Expand All @@ -36,9 +36,9 @@ type ApproveAllowanceParams struct {

func (params *ApproveAllowanceParams) Validate() error {
var validationErrors []error
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.ChainID, validationErrors)
validationErrors = validate.Parameter(params.TokenAddress, "tokenAddress", validate.EthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.WalletAddress, "walletAddress", validate.EthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.CheckChainId, validationErrors)
validationErrors = validate.Parameter(params.TokenAddress, "tokenAddress", validate.CheckEthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.WalletAddress, "walletAddress", validate.CheckEthereumAddress, validationErrors)
return validate.ConsolidateValidationErorrs(validationErrors)
}

Expand All @@ -48,7 +48,7 @@ type ApproveSpenderParams struct {

func (params *ApproveSpenderParams) Validate() error {
var validationErrors []error
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.ChainID, validationErrors)
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.CheckChainId, validationErrors)
return validate.ConsolidateValidationErorrs(validationErrors)
}

Expand All @@ -59,9 +59,9 @@ type ApproveTransactionParams struct {

func (params *ApproveTransactionParams) Validate() error {
var validationErrors []error
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.ChainID, validationErrors)
validationErrors = validate.Parameter(params.TokenAddress, "tokenAddress", validate.EthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.Amount, "amount", validate.BigIntPointer, validationErrors)
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.CheckChainId, validationErrors)
validationErrors = validate.Parameter(params.TokenAddress, "tokenAddress", validate.CheckEthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.Amount, "amount", validate.CheckBigIntPointer, validationErrors)
return validate.ConsolidateValidationErorrs(validationErrors)
}

Expand All @@ -71,7 +71,7 @@ type GetLiquiditySourcesParams struct {

func (params *GetLiquiditySourcesParams) Validate() error {
var validationErrors []error
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.ChainID, validationErrors)
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.CheckChainId, validationErrors)
return validate.ConsolidateValidationErorrs(validationErrors)
}

Expand All @@ -82,10 +82,10 @@ type GetQuoteParams struct {

func (params *GetQuoteParams) Validate() error {
var validationErrors []error
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.ChainID, validationErrors)
validationErrors = validate.Parameter(params.Src, "src", validate.EthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.Dst, "dst", validate.EthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.Amount, "amount", validate.BigInt, validationErrors)
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.CheckChainId, validationErrors)
validationErrors = validate.Parameter(params.Src, "src", validate.CheckEthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.Dst, "dst", validate.CheckEthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.Amount, "amount", validate.CheckBigInt, validationErrors)
if len(params.Src) > 0 && len(params.Dst) > 0 && params.Src == params.Dst {
validationErrors = append(validationErrors, errors.New("src and dst tokens must be different"))
}
Expand All @@ -100,12 +100,12 @@ type GetSwapDataParams struct {

func (params *GetSwapDataParams) Validate() error {
var validationErrors []error
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.ChainID, validationErrors)
validationErrors = validate.Parameter(params.Src, "src", validate.EthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.Dst, "dst", validate.EthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.Amount, "amount", validate.BigInt, validationErrors)
validationErrors = validate.Parameter(params.From, "from", validate.EthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.Slippage, "slippage", validate.Slippage, validationErrors)
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.CheckChainId, validationErrors)
validationErrors = validate.Parameter(params.Src, "src", validate.CheckEthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.Dst, "dst", validate.CheckEthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.Amount, "amount", validate.CheckBigInt, validationErrors)
validationErrors = validate.Parameter(params.From, "from", validate.CheckEthereumAddress, validationErrors)
validationErrors = validate.Parameter(params.Slippage, "slippage", validate.CheckSlippage, validationErrors)
if len(params.Src) > 0 && len(params.Dst) > 0 && params.Src == params.Dst {
validationErrors = append(validationErrors, errors.New("src and dst tokens must be different"))
}
Expand All @@ -118,6 +118,6 @@ type GetTokensParams struct {

func (params *GetTokensParams) Validate() error {
var validationErrors []error
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.ChainID, validationErrors)
validationErrors = validate.Parameter(params.ChainId, "chainId", validate.CheckChainId, validationErrors)
return validate.ConsolidateValidationErorrs(validationErrors)
}
2 changes: 1 addition & 1 deletion golang/client/swap_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ import (
"fmt"
"testing"

"github.com/1inch/1inch-sdk/golang/helpers/consts/chains"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"github.com/1inch/1inch-sdk/golang/client/swap"
"github.com/1inch/1inch-sdk/golang/helpers"
"github.com/1inch/1inch-sdk/golang/helpers/consts/addresses"
"github.com/1inch/1inch-sdk/golang/helpers/consts/chains"
"github.com/1inch/1inch-sdk/golang/helpers/consts/tokens"
)

Expand Down
12 changes: 12 additions & 0 deletions golang/client/validate/parameter.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package validate

type ValidationFunc func(parameter interface{}, variableName string) error

func Parameter(parameter interface{}, variableName string, validationFunc ValidationFunc, validationErrors []error) []error {
var err error
err = validationFunc(parameter, variableName)
if err != nil {
validationErrors = append(validationErrors, err)
}
return validationErrors
}
Loading

0 comments on commit 89b8da5

Please sign in to comment.