diff --git a/sdk-clients/aggregation/configuration.go b/sdk-clients/aggregation/configuration.go index c98d3a3..fe8a06c 100644 --- a/sdk-clients/aggregation/configuration.go +++ b/sdk-clients/aggregation/configuration.go @@ -2,9 +2,9 @@ package aggregation import ( "github.com/1inch/1inch-sdk-go/common" - "github.com/1inch/1inch-sdk-go/internal/http-executor" - "github.com/1inch/1inch-sdk-go/internal/transaction-builder" - "github.com/1inch/1inch-sdk-go/internal/web3-provider" + http_executor "github.com/1inch/1inch-sdk-go/internal/http-executor" + transaction_builder "github.com/1inch/1inch-sdk-go/internal/transaction-builder" + web3_provider "github.com/1inch/1inch-sdk-go/internal/web3-provider" ) type Configuration struct { @@ -27,12 +27,20 @@ type ConfigurationWallet struct { TxBuilder common.TransactionBuilderFactory } -func NewConfiguration(nodeUrl string, privateKey string, chainId uint64, apiUrl string, apiKey string) (*Configuration, error) { - apiCfg, err := NewConfigurationAPI(chainId, apiUrl, apiKey) +type ConfigurationParams struct { + NodeUrl string + PrivateKey string + ChainId uint64 + ApiUrl string + ApiKey string +} + +func NewConfiguration(params ConfigurationParams) (*Configuration, error) { + apiCfg, err := NewConfigurationAPI(params.ChainId, params.ApiUrl, params.ApiKey) if err != nil { return nil, err } - walletCfg, err := NewConfigurationWallet(nodeUrl, privateKey, chainId) + walletCfg, err := NewConfigurationWallet(params.NodeUrl, params.PrivateKey, params.ChainId) if err != nil { return nil, err } diff --git a/sdk-clients/aggregation/examples/approve/main.go b/sdk-clients/aggregation/examples/approve/main.go index ae2128a..8df0bd9 100644 --- a/sdk-clients/aggregation/examples/approve/main.go +++ b/sdk-clients/aggregation/examples/approve/main.go @@ -3,6 +3,7 @@ package main import ( "context" "encoding/hex" + "log" "math/big" "os" @@ -29,15 +30,21 @@ const ( PolygonWeth = "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619" ) +// nodeUrl, privateKey, constants.EthereumChainId, "https://api.1inch.dev", devPortalToken func main() { - config, err := aggregation.NewConfiguration(nodeUrl, privateKey, constants.EthereumChainId, "https://api.1inch.dev", devPortalToken) + config, err := aggregation.NewConfiguration(aggregation.ConfigurationParams{ + NodeUrl: nodeUrl, + PrivateKey: privateKey, + ChainId: constants.EthereumChainId, + ApiUrl: "https://api.1inch.dev", + ApiKey: devPortalToken, + }) if err != nil { - return + log.Fatalf("Failed to create configuration: %v\n", err) } client, err := aggregation.NewClient(config) if err != nil { - panic(err) - return + log.Fatalf("Failed to create client: %v\n", err) } ctx := context.Background() @@ -59,29 +66,28 @@ func main() { Amount: amountToSwap.String(), }) if err != nil { - panic(err) - return + log.Fatalf("Failed to get approve data: %v\n", err) } data, err := hex.DecodeString(approveData.Data[2:]) if err != nil { - return + log.Fatalf("Failed to decode approve data: %v\n", err) } to := common.HexToAddress(approveData.Data) tx, err := client.TxBuilder.New().SetData(data).SetTo(&to).Build(ctx) if err != nil { - return + log.Fatalf("Failed to build approve transaction: %v\n", err) } signedTx, err := client.Wallet.Sign(tx) if err != nil { - return + log.Fatalf("Failed to sign approve transaction: %v\n", err) } err = client.Wallet.BroadcastTransaction(ctx, signedTx) if err != nil { - return + log.Fatalf("Failed to broadcast approve transaction: %v\n", err) } } diff --git a/sdk-clients/aggregation/examples/no-wallet-client/main.go b/sdk-clients/aggregation/examples/no-wallet-client/main.go index 7b2268c..fc4ce89 100644 --- a/sdk-clients/aggregation/examples/no-wallet-client/main.go +++ b/sdk-clients/aggregation/examples/no-wallet-client/main.go @@ -3,6 +3,7 @@ package main import ( "context" "fmt" + "log" "os" "github.com/1inch/1inch-sdk-go/constants" @@ -27,11 +28,11 @@ const ( func main() { config, err := aggregation.NewConfigurationAPI(constants.PolygonChainId, "https://api.1inch.dev", devPortalToken) if err != nil { - return + log.Fatalf("Failed to create configuration: %v\n", err) } client, err := aggregation.NewClientOnlyAPI(config) if err != nil { - return + log.Fatalf("Failed to create client: %v\n", err) } ctx := context.Background() @@ -42,7 +43,7 @@ func main() { }) if err != nil { - return + log.Fatalf("Failed to get quote: %v\n", err) } fmt.Printf("Quote Amount: %+v\n", quote.ToAmount) diff --git a/sdk-clients/aggregation/examples/quote/main.go b/sdk-clients/aggregation/examples/quote/main.go index f55fa22..e88ae83 100644 --- a/sdk-clients/aggregation/examples/quote/main.go +++ b/sdk-clients/aggregation/examples/quote/main.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "fmt" + "log" "os" "github.com/1inch/1inch-sdk-go/constants" @@ -23,12 +24,20 @@ var ( ) func main() { - config, err := aggregation.NewConfiguration(nodeUrl, privateKey, constants.PolygonChainId, "https://api.1inch.dev", devPortalToken) + config, err := aggregation.NewConfiguration(aggregation.ConfigurationParams{ + NodeUrl: nodeUrl, + PrivateKey: privateKey, + ChainId: constants.PolygonChainId, + ApiUrl: "https://api.1inch.dev", + ApiKey: devPortalToken, + }) if err != nil { - return + log.Fatalf("Failed to create configuration: %v\n", err) } client, err := aggregation.NewClient(config) - + if err != nil { + log.Fatalf("Failed to create client: %v\n", err) + } ctx := context.Background() swapData, err := client.GetSwap(ctx, aggregation.GetSwapParams{ @@ -39,14 +48,12 @@ func main() { Slippage: 1, }) if err != nil { - fmt.Printf("Failed to get swap data: %v\n", err) - return + log.Fatalf("Failed to get swap data: %v\n", err) } output, err := json.MarshalIndent(swapData, "", " ") if err != nil { - fmt.Printf("Failed to marshal swap data: %v\n", err) - return + log.Fatalf("Failed to marshal swap data: %v\n", err) } fmt.Printf("%s\n", string(output)) } diff --git a/sdk-clients/aggregation/examples/swap-with-edge-cases/main.go b/sdk-clients/aggregation/examples/swap-with-edge-cases/main.go index 789d4d5..36f2267 100644 --- a/sdk-clients/aggregation/examples/swap-with-edge-cases/main.go +++ b/sdk-clients/aggregation/examples/swap-with-edge-cases/main.go @@ -3,6 +3,7 @@ package main import ( "context" "fmt" + "log" "os" "github.com/1inch/1inch-sdk-go/constants" @@ -64,13 +65,22 @@ func main() { } func SwapWithCustomConnectorTokens(chain uint64, src string, dst string, connectors string, amount string) { - config, err := aggregation.NewConfiguration(nodeUrl, privateKey, chain, "https://api.1inch.dev", devPortalToken) + config, err := aggregation.NewConfiguration(aggregation.ConfigurationParams{ + NodeUrl: nodeUrl, + PrivateKey: privateKey, + ChainId: chain, + ApiUrl: "https://api.1inch.dev", + ApiKey: devPortalToken, + }) if err != nil { - return + log.Fatalf("Failed to create configuration: %v\n", err) } client, err := aggregation.NewClient(config) - + if err != nil { + log.Fatalf("Failed to create client: %v\n", err) + } ctx := context.Background() + swapData, err := client.GetSwap(ctx, aggregation.GetSwapParams{ Src: src, Dst: dst, @@ -81,19 +91,16 @@ func SwapWithCustomConnectorTokens(chain uint64, src string, dst string, connect DisableEstimate: true, }) if err != nil { - fmt.Printf("Failed to get swap data: %v\n", err) - return + log.Fatalf("Failed to get swap data: %v\n", err) } tx, err := client.TxBuilder.New().SetData(swapData.TxNormalized.Data).SetTo(&swapData.TxNormalized.To).SetGas(swapData.TxNormalized.Gas).SetValue(swapData.TxNormalized.Value).Build(ctx) if err != nil { - fmt.Printf("Failed to build transaction: %v\n", err) - return + log.Fatalf("Failed to build transaction: %v\n", err) } signedTx, err := client.Wallet.Sign(tx) if err != nil { - fmt.Printf("Failed to sign transaction: %v\n", err) - return + log.Fatalf("Failed to sign transaction: %v\n", err) } if signedTx != nil { fmt.Println("Signed transaction: ", signedTx.Hash().Hex()) @@ -101,13 +108,22 @@ func SwapWithCustomConnectorTokens(chain uint64, src string, dst string, connect } func SwapWithCustomSlippage(chain uint64, src string, dst string, amount string, slippage float32) { - config, err := aggregation.NewConfiguration(nodeUrl, privateKey, constants.EthereumChainId, "https://api.1inch.dev", devPortalToken) + config, err := aggregation.NewConfiguration(aggregation.ConfigurationParams{ + NodeUrl: nodeUrl, + PrivateKey: privateKey, + ChainId: chain, + ApiUrl: "https://api.1inch.dev", + ApiKey: devPortalToken, + }) if err != nil { - return + log.Fatalf("Failed to create configuration: %v\n", err) } client, err := aggregation.NewClient(config) - + if err != nil { + log.Fatalf("Failed to create client: %v\n", err) + } ctx := context.Background() + swapData, err := client.GetSwap(ctx, aggregation.GetSwapParams{ Src: src, Dst: dst, @@ -117,19 +133,16 @@ func SwapWithCustomSlippage(chain uint64, src string, dst string, amount string, DisableEstimate: true, }) if err != nil { - fmt.Printf("Failed to get swap data: %v\n", err) - return + log.Fatalf("Failed to get swap data: %v\n", err) } tx, err := client.TxBuilder.New().SetData(swapData.TxNormalized.Data).SetTo(&swapData.TxNormalized.To).SetGas(swapData.TxNormalized.Gas).SetValue(swapData.TxNormalized.Value).Build(ctx) if err != nil { - fmt.Printf("Failed to build transaction: %v\n", err) - return + log.Fatalf("Failed to build transaction: %v\n", err) } signedTx, err := client.Wallet.Sign(tx) if err != nil { - fmt.Printf("Failed to sign transaction: %v\n", err) - return + log.Fatalf("Failed to sign transaction: %v\n", err) } if signedTx != nil { fmt.Println("Signed transaction: ", signedTx.Hash().Hex()) @@ -137,11 +150,20 @@ func SwapWithCustomSlippage(chain uint64, src string, dst string, amount string, } func SwapWithCustomProtocols(chain uint64, src string, dst string, amount string, protocols string) { - config, err := aggregation.NewConfiguration(nodeUrl, privateKey, constants.EthereumChainId, "https://api.1inch.dev", devPortalToken) + config, err := aggregation.NewConfiguration(aggregation.ConfigurationParams{ + NodeUrl: nodeUrl, + PrivateKey: privateKey, + ChainId: chain, + ApiUrl: "https://api.1inch.dev", + ApiKey: devPortalToken, + }) if err != nil { - return + log.Fatalf("Failed to create configuration: %v\n", err) } client, err := aggregation.NewClient(config) + if err != nil { + log.Fatalf("Failed to create client: %v\n", err) + } ctx := context.Background() swapData, err := client.GetSwap(ctx, aggregation.GetSwapParams{ @@ -154,19 +176,16 @@ func SwapWithCustomProtocols(chain uint64, src string, dst string, amount string DisableEstimate: true, }) if err != nil { - fmt.Printf("Failed to get swap data: %v\n", err) - return + log.Fatalf("Failed to get swap data: %v\n", err) } tx, err := client.TxBuilder.New().SetData(swapData.TxNormalized.Data).SetTo(&swapData.TxNormalized.To).SetGas(swapData.TxNormalized.Gas).SetValue(swapData.TxNormalized.Value).Build(ctx) if err != nil { - fmt.Printf("Failed to build transaction: %v\n", err) - return + log.Fatalf("Failed to build transaction: %v\n", err) } signedTx, err := client.Wallet.Sign(tx) if err != nil { - fmt.Printf("Failed to sign transaction: %v\n", err) - return + log.Fatalf("Failed to sign transaction: %v\n", err) } if signedTx != nil { fmt.Println("Signed transaction: ", signedTx.Hash().Hex()) @@ -174,11 +193,20 @@ func SwapWithCustomProtocols(chain uint64, src string, dst string, amount string } func SwapWithCustomReceiver(chain uint64, src string, dst string, amount string, receiver string) { - config, err := aggregation.NewConfiguration(nodeUrl, privateKey, constants.EthereumChainId, "https://api.1inch.dev", devPortalToken) + config, err := aggregation.NewConfiguration(aggregation.ConfigurationParams{ + NodeUrl: nodeUrl, + PrivateKey: privateKey, + ChainId: chain, + ApiUrl: "https://api.1inch.dev", + ApiKey: devPortalToken, + }) if err != nil { - return + log.Fatalf("Failed to create configuration: %v\n", err) } client, err := aggregation.NewClient(config) + if err != nil { + log.Fatalf("Failed to create client: %v\n", err) + } ctx := context.Background() swapData, err := client.GetSwap(ctx, aggregation.GetSwapParams{ @@ -191,19 +219,16 @@ func SwapWithCustomReceiver(chain uint64, src string, dst string, amount string, DisableEstimate: true, }) if err != nil { - fmt.Printf("Failed to get swap data: %v\n", err) - return + log.Fatalf("Failed to get swap data: %v\n", err) } tx, err := client.TxBuilder.New().SetData(swapData.TxNormalized.Data).SetTo(&swapData.TxNormalized.To).SetGas(swapData.TxNormalized.Gas).SetValue(swapData.TxNormalized.Value).Build(ctx) if err != nil { - fmt.Printf("Failed to build transaction: %v\n", err) - return + log.Fatalf("Failed to build transaction: %v\n", err) } signedTx, err := client.Wallet.Sign(tx) if err != nil { - fmt.Printf("Failed to sign transaction: %v\n", err) - return + log.Fatalf("Failed to sign transaction: %v\n", err) } if signedTx != nil { fmt.Println("Signed transaction: ", signedTx.Hash().Hex()) @@ -211,13 +236,23 @@ func SwapWithCustomReceiver(chain uint64, src string, dst string, amount string, } func SwapWithCustomFeeAndReferrer(chain uint64, src string, dst string, amount string, fee float32, referrer string) { - config, err := aggregation.NewConfiguration(nodeUrl, privateKey, constants.EthereumChainId, "https://api.1inch.dev", devPortalToken) + // nodeUrl, privateKey, chain, "https://api.1inch.dev", devPortalToken + config, err := aggregation.NewConfiguration(aggregation.ConfigurationParams{ + NodeUrl: nodeUrl, + PrivateKey: privateKey, + ChainId: chain, + ApiUrl: "https://api.1inch.dev", + ApiKey: devPortalToken, + }) if err != nil { - return + log.Fatalf("Failed to create configuration: %v\n", err) } client, err := aggregation.NewClient(config) - + if err != nil { + log.Fatalf("Failed to create client: %v\n", err) + } ctx := context.Background() + swapData, err := client.GetSwap(ctx, aggregation.GetSwapParams{ Src: src, Dst: dst, @@ -229,19 +264,16 @@ func SwapWithCustomFeeAndReferrer(chain uint64, src string, dst string, amount s DisableEstimate: true, }) if err != nil { - fmt.Printf("Failed to get swap data: %v\n", err) - return + log.Fatalf("Failed to get swap data: %v\n", err) } tx, err := client.TxBuilder.New().SetData(swapData.TxNormalized.Data).SetTo(&swapData.TxNormalized.To).SetGas(swapData.TxNormalized.Gas).SetValue(swapData.TxNormalized.Value).Build(ctx) if err != nil { - fmt.Printf("Failed to build transaction: %v\n", err) - return + log.Fatalf("Failed to build transaction: %v\n", err) } signedTx, err := client.Wallet.Sign(tx) if err != nil { - fmt.Printf("Failed to sign transaction: %v\n", err) - return + log.Fatalf("Failed to sign transaction: %v\n", err) } if signedTx != nil { fmt.Println("Signed transaction: ", signedTx.Hash().Hex()) diff --git a/sdk-clients/aggregation/examples/swap-with-permit/main.go b/sdk-clients/aggregation/examples/swap-with-permit/main.go index 1c45cd6..f664770 100644 --- a/sdk-clients/aggregation/examples/swap-with-permit/main.go +++ b/sdk-clients/aggregation/examples/swap-with-permit/main.go @@ -3,6 +3,7 @@ package main import ( "context" "fmt" + "log" "math/big" "os" "time" @@ -31,12 +32,20 @@ const ( ) func main() { - config, err := aggregation.NewConfiguration(nodeUrl, privateKey, constants.PolygonChainId, "https://api.1inch.dev", devPortalToken) + config, err := aggregation.NewConfiguration(aggregation.ConfigurationParams{ + NodeUrl: nodeUrl, + PrivateKey: privateKey, + ChainId: constants.PolygonChainId, + ApiUrl: "https://api.1inch.dev", + ApiKey: devPortalToken, + }) if err != nil { - return + log.Fatalf("Failed to create configuration: %v\n", err) } client, err := aggregation.NewClient(config) - + if err != nil { + log.Fatalf("Failed to create client: %v\n", err) + } ctx := context.Background() amountToSwap := big.NewInt(1e17) @@ -45,6 +54,9 @@ func main() { TokenAddress: PolygonFRAX, WalletAddress: client.Wallet.Address().Hex(), }) + if err != nil { + log.Fatalf("Failed to get allowance: %v\n", err) + } allowance := new(big.Int) allowance.SetString(allowanceData.Allowance, 10) @@ -63,12 +75,12 @@ func main() { permitData, err := client.Wallet.GetContractDetailsForPermit(ctx, common.HexToAddress(PolygonFRAX), common.HexToAddress(spender.Address), amountToSwap, twoDaysLater.Unix()) if err != nil { - panic(err) + log.Fatalf("Failed to get permit data: %v\n", err) } permit, err = client.Wallet.TokenPermit(*permitData) if err != nil { - panic(err) + log.Fatalf("Failed to sign permit: %v\n", err) } } @@ -84,27 +96,23 @@ func main() { } swapData, err := client.GetSwap(ctx, swapParams) if err != nil { - fmt.Printf("Failed to get swap data: %v\n", err) - return + log.Fatalf("Failed to get swap data: %v\n", err) } builder := client.TxBuilder.New() tx, err := builder.SetData(swapData.TxNormalized.Data).SetTo(&swapData.TxNormalized.To).SetGas(swapData.TxNormalized.Gas).SetValue(swapData.TxNormalized.Value).Build(ctx) if err != nil { - fmt.Printf("Failed to build transaction: %v\n", err) - return + log.Fatalf("Failed to build transaction: %v\n", err) } signedTx, err := client.Wallet.Sign(tx) if err != nil { - fmt.Printf("Failed to sign transaction: %v\n", err) - return + log.Fatalf("Failed to sign transaction: %v\n", err) } err = client.Wallet.BroadcastTransaction(ctx, signedTx) if err != nil { - fmt.Printf("Failed to broadcast transaction: %v\n", err) - return + log.Fatalf("Failed to broadcast transaction: %v\n", err) } // Waiting for transaction, just an example of it diff --git a/sdk-clients/aggregation/examples/swap/main.go b/sdk-clients/aggregation/examples/swap/main.go index de6e010..c76d9d5 100644 --- a/sdk-clients/aggregation/examples/swap/main.go +++ b/sdk-clients/aggregation/examples/swap/main.go @@ -3,6 +3,7 @@ package main import ( "context" "fmt" + "log" "os" "time" @@ -23,12 +24,20 @@ var ( ) func main() { - config, err := aggregation.NewConfiguration(nodeUrl, privateKey, constants.EthereumChainId, "https://api.1inch.dev", devPortalToken) + config, err := aggregation.NewConfiguration(aggregation.ConfigurationParams{ + NodeUrl: nodeUrl, + PrivateKey: privateKey, + ChainId: constants.EthereumChainId, + ApiUrl: "https://api.1inch.dev", + ApiKey: devPortalToken, + }) if err != nil { - return + log.Fatalf("Failed to create configuration: %v\n", err) } client, err := aggregation.NewClient(config) - + if err != nil { + log.Fatalf("Failed to create client: %v\n", err) + } ctx := context.Background() swapData, err := client.GetSwap(ctx, aggregation.GetSwapParams{ @@ -39,25 +48,21 @@ func main() { Slippage: 1, }) if err != nil { - fmt.Printf("Failed to get swap data: %v\n", err) - return + log.Fatalf("Failed to get swap data: %v\n", err) } tx, err := client.TxBuilder.New().SetData(swapData.TxNormalized.Data).SetTo(&swapData.TxNormalized.To).SetGas(swapData.TxNormalized.Gas).SetValue(swapData.TxNormalized.Value).Build(ctx) if err != nil { - fmt.Printf("Failed to build transaction: %v\n", err) - return + log.Fatalf("Failed to build transaction: %v\n", err) } signedTx, err := client.Wallet.Sign(tx) if err != nil { - fmt.Printf("Failed to sign transaction: %v\n", err) - return + log.Fatalf("Failed to sign transaction: %v\n", err) } err = client.Wallet.BroadcastTransaction(ctx, signedTx) if err != nil { - fmt.Printf("Failed to broadcast transaction: %v\n", err) - return + log.Fatalf("Failed to broadcast transaction: %v\n", err) } // Waiting for transaction, just an examples of it diff --git a/sdk-clients/balances/configuration.go b/sdk-clients/balances/configuration.go index f980fe7..9d8272d 100644 --- a/sdk-clients/balances/configuration.go +++ b/sdk-clients/balances/configuration.go @@ -1,7 +1,7 @@ package balances import ( - "github.com/1inch/1inch-sdk-go/internal/http-executor" + http_executor "github.com/1inch/1inch-sdk-go/internal/http-executor" ) type Configuration struct { @@ -10,20 +10,26 @@ type Configuration struct { API api } -func NewConfiguration(chainId uint64, apiUrl string, apiKey string) (*Configuration, error) { - executor, err := http_executor.DefaultHttpClient(apiUrl, apiKey) +type ConfigurationParams struct { + ChainId uint64 + ApiUrl string + ApiKey string +} + +func NewConfiguration(params ConfigurationParams) (*Configuration, error) { + executor, err := http_executor.DefaultHttpClient(params.ApiUrl, params.ApiKey) if err != nil { return nil, err } a := api{ - chainId: chainId, + chainId: params.ChainId, httpExecutor: executor, } return &Configuration{ - ApiURL: apiUrl, - ApiKey: apiKey, + ApiURL: params.ApiUrl, + ApiKey: params.ApiKey, API: a, }, nil } diff --git a/sdk-clients/balances/configuration_test.go b/sdk-clients/balances/configuration_test.go index 5768e15..fbcf5f6 100644 --- a/sdk-clients/balances/configuration_test.go +++ b/sdk-clients/balances/configuration_test.go @@ -7,7 +7,11 @@ import ( ) func TestNewConfigurationAPI(t *testing.T) { - configAPI, err := NewConfiguration(1, "https://api.example.com", "apikey123") + configAPI, err := NewConfiguration(ConfigurationParams{ + ChainId: 1, + ApiUrl: "https://api.example.com", + ApiKey: "apikey123", + }) assert.NoError(t, err) assert.NotNil(t, configAPI) diff --git a/sdk-clients/balances/examples/main.go b/sdk-clients/balances/examples/main.go index 54fb68f..47ed099 100644 --- a/sdk-clients/balances/examples/main.go +++ b/sdk-clients/balances/examples/main.go @@ -3,6 +3,7 @@ package main import ( "context" "fmt" + "log" "os" "time" @@ -32,13 +33,17 @@ const ( ) func main() { - config, err := balances.NewConfiguration(constants.EthereumChainId, "https://api.1inch.dev", devPortalToken) + config, err := balances.NewConfiguration(balances.ConfigurationParams{ + ChainId: constants.EthereumChainId, + ApiUrl: "https://api.1inch.dev", + ApiKey: devPortalToken, + }) if err != nil { - return + log.Fatalf("Failed to create configuration: %v\n", err) } client, err := balances.NewClient(config) if err != nil { - return + log.Fatalf("Failed to create client: %v\n", err) } ctx := context.Background() @@ -47,8 +52,7 @@ func main() { Tokens: []string{tokenAddress1, tokenAddress2}, }) if err != nil { - fmt.Println("failed to GetBalancesOfCustomTokensByWalletAddress: %w", err) - return + log.Fatalf("failed to GetBalancesOfCustomTokensByWalletAddress: %v\n", err) } fmt.Println("GetBalancesOfCustomTokensByWalletAddress:", balancesOfCustomTokensByWalletAddressResponse) @@ -59,8 +63,7 @@ func main() { Tokens: []string{tokenAddress1, tokenAddress2}, }) if err != nil { - fmt.Println("failed to GetBalancesOfCustomTokensByWalletAddressesList: %w", err) - return + log.Fatalf("failed to GetBalancesOfCustomTokensByWalletAddressesList: %v\n", err) } fmt.Println("GetBalancesOfCustomTokensByWalletAddressesList:", balancesOfCustomTokensByWalletAddressesListResponse) @@ -72,8 +75,7 @@ func main() { Spender: spender, }) if err != nil { - fmt.Println("failed to GetBalancesAndAllowances: %w", err) - return + log.Fatalf("failed to GetBalancesAndAllowances: %v\n", err) } fmt.Println("aggregatedBalancesAndAllowancesResponse:", aggregatedBalancesAndAllowancesResponse) @@ -81,8 +83,7 @@ func main() { balancesByWalletAddressResponse, err := client.GetBalancesByWalletAddress(ctx, balances.BalancesByWalletAddressParams{Wallet: mainWalletAddress}) if err != nil { - fmt.Println("failed to GetBalancesByWalletAddress: %w", err) - return + log.Fatalf("failed to GetBalancesByWalletAddress: %v\n", err) } fmt.Println("GetBalancesByWalletAddress:", balancesByWalletAddressResponse) @@ -93,8 +94,7 @@ func main() { Spender: spender, }) if err != nil { - fmt.Println("failed to GetAllowancesByWalletAddress: %w", err) - return + log.Fatalf("failed to GetAllowancesByWalletAddress: %v\n", err) } fmt.Println("GetAllowancesByWalletAddress:", allowancesByWalletAddressResponse) @@ -106,8 +106,7 @@ func main() { Tokens: []string{tokenAddress1, tokenAddress2}, }) if err != nil { - fmt.Println("failed to GetAllowancesOfCustomTokensByWalletAddress: %w", err) - return + log.Fatalf("failed to GetAllowancesOfCustomTokensByWalletAddress: %v\n", err) } fmt.Println("GetAllowancesOfCustomTokensByWalletAddress:", allowancesOfCustomTokensByWalletAddressResponse) @@ -118,8 +117,7 @@ func main() { Spender: spenderInch, }) if err != nil { - fmt.Println("failed to GetBalancesAndAllowancesByWalletAddressList: %w", err) - return + log.Fatalf("failed to GetBalancesAndAllowancesByWalletAddressList: %v\n", err) } fmt.Println("GetBalancesAndAllowancesByWalletAddressList:", balancesAndAllowancesByWalletAddressListResponse) @@ -131,8 +129,7 @@ func main() { Tokens: []string{tokenAddress1, tokenAddress2}, }) if err != nil { - fmt.Println("failed to GetBalancesAndAllowancesOfCustomTokensByWalletAddressList: %w", err) - return + log.Fatalf("failed to GetBalancesAndAllowancesOfCustomTokensByWalletAddressList: %v\n", err) } fmt.Println("GetBalancesAndAllowancesOfCustomTokensByWalletAddressList:", balancesAndAllowancesOfCustomTokensByWalletAddressResponse) diff --git a/sdk-clients/gasprices/configuration.go b/sdk-clients/gasprices/configuration.go index 43706c9..84ffb59 100644 --- a/sdk-clients/gasprices/configuration.go +++ b/sdk-clients/gasprices/configuration.go @@ -1,7 +1,7 @@ package gasprices import ( - "github.com/1inch/1inch-sdk-go/internal/http-executor" + http_executor "github.com/1inch/1inch-sdk-go/internal/http-executor" ) type Configuration struct { @@ -10,20 +10,26 @@ type Configuration struct { API api } -func NewConfiguration(chainId uint64, apiUrl string, apiKey string) (*Configuration, error) { - executor, err := http_executor.DefaultHttpClient(apiUrl, apiKey) +type ConfigurationParams struct { + ChainId uint64 + ApiUrl string + ApiKey string +} + +func NewConfiguration(params ConfigurationParams) (*Configuration, error) { + executor, err := http_executor.DefaultHttpClient(params.ApiUrl, params.ApiKey) if err != nil { return nil, err } a := api{ - chainId: chainId, + chainId: params.ChainId, httpExecutor: executor, } return &Configuration{ - ApiURL: apiUrl, - ApiKey: apiKey, + ApiURL: params.ApiUrl, + ApiKey: params.ApiKey, API: a, }, nil } diff --git a/sdk-clients/gasprices/configuration_test.go b/sdk-clients/gasprices/configuration_test.go index 7ae3a5c..3fa5576 100644 --- a/sdk-clients/gasprices/configuration_test.go +++ b/sdk-clients/gasprices/configuration_test.go @@ -7,7 +7,11 @@ import ( ) func TestNewConfigurationAPI(t *testing.T) { - configAPI, err := NewConfiguration(1, "https://api.example.com", "apikey123") + configAPI, err := NewConfiguration(ConfigurationParams{ + ChainId: 1, + ApiUrl: "https://api.example.com", + ApiKey: "apikey123", + }) assert.NoError(t, err) assert.NotNil(t, configAPI) diff --git a/sdk-clients/gasprices/examples/main.go b/sdk-clients/gasprices/examples/main.go index d17b51e..bf8a242 100644 --- a/sdk-clients/gasprices/examples/main.go +++ b/sdk-clients/gasprices/examples/main.go @@ -3,6 +3,7 @@ package main import ( "context" "fmt" + "log" "os" "time" @@ -21,31 +22,38 @@ var ( ) func main() { - config, err := gasprices.NewConfiguration(constants.EthereumChainId, "https://api.1inch.dev", devPortalToken) + config, err := gasprices.NewConfiguration(gasprices.ConfigurationParams{ + ChainId: constants.EthereumChainId, + ApiUrl: "https://api.1inch.dev", + ApiKey: devPortalToken, + }) if err != nil { - return + log.Fatal("failed to create configuration: %w", err) } - configLegacyChain, err := gasprices.NewConfiguration(constants.AuroraChainId, "https://api.1inch.dev", devPortalToken) + configLegacyChain, err := gasprices.NewConfiguration(gasprices.ConfigurationParams{ + ChainId: constants.AuroraChainId, + ApiUrl: "https://api.1inch.dev", + ApiKey: devPortalToken, + }) if err != nil { - return + log.Fatal("failed to create configuration for legacy chain: %w", err) } client, err := gasprices.NewClient(config) if err != nil { - return + log.Fatalf("failed to create client: %v", err) } clientLegacyChain, err := gasprices.NewClient(configLegacyChain) if err != nil { - return + log.Fatalf("failed to create legacy client: %v", err) } ctx := context.Background() gasPriceEIP15559, err := client.GetGasPriceEIP1559(ctx) if err != nil { - fmt.Println("failed to GetGasPriceEIP1559: %w", err) - return + log.Fatalf("failed to GetGasPriceEIP1559: %v", err) } fmt.Println("GetGasPriceEIP1559:", gasPriceEIP15559) @@ -53,8 +61,7 @@ func main() { gasPriceLegacy, err := clientLegacyChain.GetGasPriceLegacy(ctx) if err != nil { - fmt.Println("failed to GetGasPriceLegacy: %w", err) - return + log.Fatalf("failed to GetGasPriceLegacy: %v", err) } fmt.Println("GetGasPriceLegacy:", gasPriceLegacy) diff --git a/sdk-clients/history/configuration.go b/sdk-clients/history/configuration.go index faf3fe6..8b9d9d8 100644 --- a/sdk-clients/history/configuration.go +++ b/sdk-clients/history/configuration.go @@ -1,7 +1,7 @@ package history import ( - "github.com/1inch/1inch-sdk-go/internal/http-executor" + http_executor "github.com/1inch/1inch-sdk-go/internal/http-executor" ) type Configuration struct { @@ -10,8 +10,13 @@ type Configuration struct { API api } -func NewConfiguration(apiUrl string, apiKey string) (*Configuration, error) { - executor, err := http_executor.DefaultHttpClient(apiUrl, apiKey) +type ConfigurationParams struct { + ApiUrl string + ApiKey string +} + +func NewConfiguration(params ConfigurationParams) (*Configuration, error) { + executor, err := http_executor.DefaultHttpClient(params.ApiUrl, params.ApiKey) if err != nil { return nil, err } @@ -21,8 +26,8 @@ func NewConfiguration(apiUrl string, apiKey string) (*Configuration, error) { } return &Configuration{ - ApiURL: apiUrl, - ApiKey: apiKey, + ApiURL: params.ApiUrl, + ApiKey: params.ApiKey, API: a, }, nil } diff --git a/sdk-clients/history/configuration_test.go b/sdk-clients/history/configuration_test.go index ec050e6..de83562 100644 --- a/sdk-clients/history/configuration_test.go +++ b/sdk-clients/history/configuration_test.go @@ -7,7 +7,10 @@ import ( ) func TestNewConfigurationAPI(t *testing.T) { - configAPI, err := NewConfiguration("https://api.example.com", "apikey123") + configAPI, err := NewConfiguration(ConfigurationParams{ + ApiUrl: "https://api.example.com", + ApiKey: "apikey123", + }) assert.NoError(t, err) assert.NotNil(t, configAPI) diff --git a/sdk-clients/history/examples/main.go b/sdk-clients/history/examples/main.go index 60c3101..aab7253 100644 --- a/sdk-clients/history/examples/main.go +++ b/sdk-clients/history/examples/main.go @@ -3,6 +3,7 @@ package main import ( "context" "fmt" + "log" "os" "time" @@ -21,13 +22,16 @@ var ( ) func main() { - config, err := history.NewConfiguration("https://api.1inch.dev", devPortalToken) + config, err := history.NewConfiguration(history.ConfigurationParams{ + ApiUrl: "https://api.1inch.dev", + ApiKey: devPortalToken, + }) if err != nil { - return + log.Fatal("failed to create configuration: %w", err) } client, err := history.NewClient(config) if err != nil { - return + log.Fatalf("failed to create client: %v", err) } ctx := context.Background() @@ -36,8 +40,7 @@ func main() { ChainId: constants.EthereumChainId, }) if err != nil { - fmt.Println("failed to GetHistoryEventsByAddress: %w", err) - return + log.Fatalf("failed to GetHistoryEventsByAddress: %v", err) } fmt.Println("GetHistoryEventsByAddress:", historyEvents) diff --git a/sdk-clients/nft/configuration.go b/sdk-clients/nft/configuration.go index d942cd5..0db0589 100644 --- a/sdk-clients/nft/configuration.go +++ b/sdk-clients/nft/configuration.go @@ -1,7 +1,7 @@ package nft import ( - "github.com/1inch/1inch-sdk-go/internal/http-executor" + http_executor "github.com/1inch/1inch-sdk-go/internal/http-executor" ) type Configuration struct { @@ -10,8 +10,13 @@ type Configuration struct { API api } -func NewConfiguration(apiUrl string, apiKey string) (*Configuration, error) { - executor, err := http_executor.DefaultHttpClient(apiUrl, apiKey) +type ConfigurationParams struct { + ApiUrl string + ApiKey string +} + +func NewConfiguration(params ConfigurationParams) (*Configuration, error) { + executor, err := http_executor.DefaultHttpClient(params.ApiUrl, params.ApiKey) if err != nil { return nil, err } @@ -21,8 +26,8 @@ func NewConfiguration(apiUrl string, apiKey string) (*Configuration, error) { } return &Configuration{ - ApiURL: apiUrl, - ApiKey: apiKey, + ApiURL: params.ApiUrl, + ApiKey: params.ApiKey, API: a, }, nil } diff --git a/sdk-clients/nft/configuration_test.go b/sdk-clients/nft/configuration_test.go index 5e9bc20..f6c2c4a 100644 --- a/sdk-clients/nft/configuration_test.go +++ b/sdk-clients/nft/configuration_test.go @@ -7,7 +7,10 @@ import ( ) func TestNewConfigurationAPI(t *testing.T) { - configAPI, err := NewConfiguration("https://api.example.com", "apikey123") + configAPI, err := NewConfiguration(ConfigurationParams{ + ApiUrl: "https://api.example.com", + ApiKey: "apikey123", + }) assert.NoError(t, err) assert.NotNil(t, configAPI) diff --git a/sdk-clients/nft/examples/main.go b/sdk-clients/nft/examples/main.go index a04a64d..5b2955b 100644 --- a/sdk-clients/nft/examples/main.go +++ b/sdk-clients/nft/examples/main.go @@ -3,6 +3,7 @@ package main import ( "context" "fmt" + "log" "os" "time" @@ -21,20 +22,22 @@ var ( ) func main() { - config, err := nft.NewConfiguration("https://api.1inch.dev", devPortalToken) + config, err := nft.NewConfiguration(nft.ConfigurationParams{ + ApiUrl: "https://api.1inch.dev", + ApiKey: devPortalToken, + }) if err != nil { - return + log.Fatalf("failed to create configuration: %v", err) } client, err := nft.NewClient(config) if err != nil { - return + log.Fatalf("failed to create client: %v", err) } ctx := context.Background() chains, err := client.GetSupportedChains(ctx) if err != nil { - fmt.Println("failed to GetSupportedChains: %w", err) - return + log.Fatalf("failed to GetSupportedChains: %v", err) } fmt.Println("GetSupportedChains:", chains) @@ -48,8 +51,7 @@ func main() { Address: "0x083fc10cE7e97CaFBaE0fE332a9c4384c5f54E45", }) if err != nil { - fmt.Println("failed to GetNftsByAddressParams: %w", err) - return + log.Fatalf("failed to GetNftsByAddress: %v", err) } fmt.Println("GetNftsByAddressParams:", nftsByAddress) diff --git a/sdk-clients/orderbook/client.go b/sdk-clients/orderbook/client.go new file mode 100644 index 0000000..c1bd73c --- /dev/null +++ b/sdk-clients/orderbook/client.go @@ -0,0 +1,61 @@ +package orderbook + +import ( + "strings" + + "github.com/ethereum/go-ethereum/accounts/abi" + + "github.com/1inch/1inch-sdk-go/common" + "github.com/1inch/1inch-sdk-go/constants" +) + +type Client struct { + api + Wallet common.Wallet + TxBuilder common.TransactionBuilderFactory + AggregationRouterV6 *abi.ABI + SeriesNonceManager *abi.ABI +} + +type ClientOnlyAPI struct { + api +} + +type api struct { + chainId uint64 + httpExecutor common.HttpExecutor +} + +func NewClient(cfg *Configuration) (*Client, error) { + + aggregationRouterV6, err := abi.JSON(strings.NewReader(constants.AggregationRouterV6ABI)) + if err != nil { + return nil, err + } + + seriesNonceManagerABI, err := abi.JSON(strings.NewReader(constants.SeriesNonceManagerABI)) // Make a generic version of this ABI + if err != nil { + return nil, err + } + + c := Client{ + api: cfg.APIConfiguration.API, + AggregationRouterV6: &aggregationRouterV6, + SeriesNonceManager: &seriesNonceManagerABI, + } + + if cfg.WalletConfiguration != nil { + c.Wallet = cfg.WalletConfiguration.Wallet + c.TxBuilder = cfg.WalletConfiguration.TxBuilder + } + + return &c, nil +} + +func NewClientOnlyAPI(cfg *ConfigurationAPI) (*ClientOnlyAPI, error) { + c := ClientOnlyAPI{ + api: cfg.API, + } + + return &c, nil +} diff --git a/sdk-clients/orderbook/configuration.go b/sdk-clients/orderbook/configuration.go new file mode 100644 index 0000000..a36124b --- /dev/null +++ b/sdk-clients/orderbook/configuration.go @@ -0,0 +1,83 @@ +package orderbook + +import ( + "github.com/1inch/1inch-sdk-go/common" + http_executor "github.com/1inch/1inch-sdk-go/internal/http-executor" + transaction_builder "github.com/1inch/1inch-sdk-go/internal/transaction-builder" + web3_provider "github.com/1inch/1inch-sdk-go/internal/web3-provider" +) + +type Configuration struct { + WalletConfiguration *WalletConfiguration + APIConfiguration *ConfigurationAPI +} + +type ConfigurationAPI struct { + ApiKey string + ApiURL string + + API api +} + +type WalletConfiguration struct { + PrivateKey string + NodeURL string + + Wallet common.Wallet + TxBuilder common.TransactionBuilderFactory +} + +type ConfigurationParams struct { + NodeUrl string + PrivateKey string + ChainId uint64 + ApiUrl string + ApiKey string +} + +func NewConfiguration(params ConfigurationParams) (*Configuration, error) { + apiCfg, err := NewConfigurationAPI(params.ChainId, params.ApiUrl, params.ApiKey) + if err != nil { + return nil, err + } + walletCfg, err := NewConfigurationWallet(params.NodeUrl, params.PrivateKey, params.ChainId) + if err != nil { + return nil, err + } + return &Configuration{ + WalletConfiguration: walletCfg, + APIConfiguration: apiCfg, + }, nil +} + +func NewConfigurationAPI(chainId uint64, apiUrl string, apiKey string) (*ConfigurationAPI, error) { + executor, err := http_executor.DefaultHttpClient(apiUrl, apiKey) + if err != nil { + return nil, err + } + + a := api{ + chainId: chainId, + httpExecutor: executor, + } + + return &ConfigurationAPI{ + ApiURL: apiUrl, + ApiKey: apiKey, + + API: a, + }, nil +} + +func NewConfigurationWallet(nodeUrl string, privateKey string, chainId uint64) (*WalletConfiguration, error) { + w, err := web3_provider.DefaultWalletProvider(privateKey, nodeUrl, chainId) + if err != nil { + return nil, err + } + + f := transaction_builder.NewFactory(w) + return &WalletConfiguration{ + Wallet: w, + TxBuilder: f, + }, nil +} diff --git a/sdk-clients/orderbook/configuration_test.go b/sdk-clients/orderbook/configuration_test.go new file mode 100644 index 0000000..4c63499 --- /dev/null +++ b/sdk-clients/orderbook/configuration_test.go @@ -0,0 +1,69 @@ +package orderbook + +import ( + "testing" + + "github.com/stretchr/testify/assert" + + "github.com/1inch/1inch-sdk-go/constants" +) + +func TestNewConfigurationAPI(t *testing.T) { + configAPI, err := NewConfigurationAPI(1, "https://api.example.com", "apikey123") + + assert.NoError(t, err) + assert.NotNil(t, configAPI) + assert.Equal(t, uint64(1), configAPI.API.chainId) + assert.Equal(t, "https://api.example.com", configAPI.ApiURL) + assert.Equal(t, "apikey123", configAPI.ApiKey) +} + +func TestNewConfigurationWallet(t *testing.T) { + testCases := []struct { + name string + privateKey string + nodeURL string + chainId uint64 + wantErr bool + }{ + { + name: "Valid inputs", + privateKey: "965e092fdfc08940d2bd05c7b5c7e1c51e283e92c7f52bbf1408973ae9a9acb7", + nodeURL: "https://localhost:8545", + chainId: constants.EthereumChainId, + wantErr: false, + }, + { + name: "Invalid private key", + privateKey: "invalidkey", + nodeURL: "https://localhost:8545", + chainId: constants.EthereumChainId, + wantErr: true, + }, + { + name: "Empty private key", + privateKey: "", + nodeURL: "https://localhost:8545", + chainId: constants.EthereumChainId, + wantErr: true, + }, + { + name: "Empty node URL", + privateKey: "45779132284297842289675692834abcdef9876543212345678900987654321", + nodeURL: "", + chainId: constants.EthereumChainId, + wantErr: true, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + _, err := NewConfigurationWallet(tc.nodeURL, tc.privateKey, tc.chainId) + if tc.wantErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) + } + }) + } +} diff --git a/sdk-clients/orderbook/examples/create_and_fill_order/main.go b/sdk-clients/orderbook/examples/create_and_fill_order/main.go index 83cf0ad..c56732c 100644 --- a/sdk-clients/orderbook/examples/create_and_fill_order/main.go +++ b/sdk-clients/orderbook/examples/create_and_fill_order/main.go @@ -39,7 +39,13 @@ const ( func main() { ctx := context.Background() - config, err := orderbook.NewDefaultConfiguration(nodeUrl, privateKey, uint64(chainId), "https://api.1inch.dev", devPortalToken) + config, err := orderbook.NewConfiguration(orderbook.ConfigurationParams{ + NodeUrl: nodeUrl, + PrivateKey: privateKey, + ChainId: chainId, + ApiUrl: "https://api.1inch.dev", + ApiKey: devPortalToken, + }) if err != nil { log.Fatal(err) } diff --git a/sdk-clients/orderbook/examples/create_order/main.go b/sdk-clients/orderbook/examples/create_order/main.go index 77f4163..a88163c 100644 --- a/sdk-clients/orderbook/examples/create_order/main.go +++ b/sdk-clients/orderbook/examples/create_order/main.go @@ -38,7 +38,13 @@ const ( func main() { ctx := context.Background() - config, err := orderbook.NewDefaultConfiguration(nodeUrl, privateKey, uint64(chainId), "https://api.1inch.dev", devPortalToken) + config, err := orderbook.NewConfiguration(orderbook.ConfigurationParams{ + NodeUrl: nodeUrl, + PrivateKey: privateKey, + ChainId: chainId, + ApiUrl: "https://api.1inch.dev", + ApiKey: devPortalToken, + }) if err != nil { log.Fatal(err) } diff --git a/sdk-clients/orderbook/examples/create_order_permit/main.go b/sdk-clients/orderbook/examples/create_order_permit/main.go index 478f59f..19dd188 100644 --- a/sdk-clients/orderbook/examples/create_order_permit/main.go +++ b/sdk-clients/orderbook/examples/create_order_permit/main.go @@ -42,7 +42,13 @@ const ( func main() { ctx := context.Background() - config, err := orderbook.NewDefaultConfiguration(nodeUrl, privateKey, uint64(chainId), "https://api.1inch.dev", devPortalToken) + config, err := orderbook.NewConfiguration(orderbook.ConfigurationParams{ + NodeUrl: nodeUrl, + PrivateKey: privateKey, + ChainId: chainId, + ApiUrl: "https://api.1inch.dev", + ApiKey: devPortalToken, + }) if err != nil { log.Fatal(err) } diff --git a/sdk-clients/orderbook/examples/fill_order/main.go b/sdk-clients/orderbook/examples/fill_order/main.go index e1264b1..9afb5da 100644 --- a/sdk-clients/orderbook/examples/fill_order/main.go +++ b/sdk-clients/orderbook/examples/fill_order/main.go @@ -26,14 +26,20 @@ var ( ) const ( - limitOrderHash = "0xddf0907b11b3dba4591372e201117f09f9cdc7ccfff175397bc57eeb7043a59f" + limitOrderHash = "0x6e6b51a256ea0e5b7cb59918b3af368bd12a1bfcdd61522e878638c3a8dcf288" chainId = 137 ) func main() { ctx := context.Background() - config, err := orderbook.NewDefaultConfiguration(nodeUrl, privateKey, uint64(chainId), "https://api.1inch.dev", devPortalToken) + config, err := orderbook.NewConfiguration(orderbook.ConfigurationParams{ + NodeUrl: nodeUrl, + PrivateKey: privateKey, + ChainId: chainId, + ApiUrl: "https://api.1inch.dev", + ApiKey: devPortalToken, + }) if err != nil { log.Fatal(err) } diff --git a/sdk-clients/orderbook/orderbook.go b/sdk-clients/orderbook/orderbook.go deleted file mode 100644 index bf97f96..0000000 --- a/sdk-clients/orderbook/orderbook.go +++ /dev/null @@ -1,105 +0,0 @@ -package orderbook - -import ( - "strings" - - "github.com/ethereum/go-ethereum/accounts/abi" - - "github.com/1inch/1inch-sdk-go/common" - "github.com/1inch/1inch-sdk-go/constants" - - http_executor "github.com/1inch/1inch-sdk-go/internal/http-executor" - transaction_builder "github.com/1inch/1inch-sdk-go/internal/transaction-builder" - web3_provider "github.com/1inch/1inch-sdk-go/internal/web3-provider" -) - -type Configuration struct { - WalletConfiguration *WalletConfiguration - ChainId uint64 - - ApiKey string - ApiURL string - - API api -} - -type WalletConfiguration struct { - PrivateKey string - NodeURL string - - Wallet common.Wallet - TxBuilder common.TransactionBuilderFactory -} - -type Client struct { - api - AggregationRouterV6 *abi.ABI - SeriesNonceManager *abi.ABI - Wallet common.Wallet - TxBuilder common.TransactionBuilderFactory -} - -type api struct { - chainId uint64 - httpExecutor common.HttpExecutor -} - -func NewClient(cfg *Configuration) (*Client, error) { - - aggregationRouterV6, err := abi.JSON(strings.NewReader(constants.AggregationRouterV6ABI)) - if err != nil { - return nil, err - } - - seriesNonceManagerABI, err := abi.JSON(strings.NewReader(constants.SeriesNonceManagerABI)) // Make a generic version of this ABI - if err != nil { - return nil, err - } - - c := Client{ - api: cfg.API, - AggregationRouterV6: &aggregationRouterV6, - SeriesNonceManager: &seriesNonceManagerABI, - } - - if cfg.WalletConfiguration != nil { - c.Wallet = cfg.WalletConfiguration.Wallet - c.TxBuilder = cfg.WalletConfiguration.TxBuilder - } - - return &c, nil -} - -func NewDefaultConfiguration(nodeUrl string, privateKey string, chainId uint64, apiUrl string, apiKey string) (*Configuration, error) { - executor, err := http_executor.DefaultHttpClient(apiUrl, apiKey) - if err != nil { - return nil, err - } - - a := api{ - chainId: chainId, - httpExecutor: executor, - } - - walletCfg, err := NewDefaultWalletConfiguration(nodeUrl, privateKey, chainId) - if err != nil { - return nil, err - } - return &Configuration{ - WalletConfiguration: walletCfg, - API: a, - }, nil -} - -func NewDefaultWalletConfiguration(nodeUrl string, privateKey string, chainId uint64) (*WalletConfiguration, error) { - w, err := web3_provider.DefaultWalletProvider(privateKey, nodeUrl, chainId) - if err != nil { - return nil, err - } - - f := transaction_builder.NewFactory(w) - return &WalletConfiguration{ - Wallet: w, - TxBuilder: f, - }, nil -} diff --git a/sdk-clients/spotprices/configuration.go b/sdk-clients/spotprices/configuration.go index 205eefa..6c33aef 100644 --- a/sdk-clients/spotprices/configuration.go +++ b/sdk-clients/spotprices/configuration.go @@ -1,7 +1,7 @@ package spotprices import ( - "github.com/1inch/1inch-sdk-go/internal/http-executor" + http_executor "github.com/1inch/1inch-sdk-go/internal/http-executor" ) type Configuration struct { @@ -10,20 +10,26 @@ type Configuration struct { API api } -func NewConfiguration(chainId uint64, apiUrl string, apiKey string) (*Configuration, error) { - executor, err := http_executor.DefaultHttpClient(apiUrl, apiKey) +type ConfigurationParams struct { + ChainId uint64 + ApiUrl string + ApiKey string +} + +func NewConfiguration(params ConfigurationParams) (*Configuration, error) { + executor, err := http_executor.DefaultHttpClient(params.ApiUrl, params.ApiKey) if err != nil { return nil, err } a := api{ - chainId: chainId, + chainId: params.ChainId, httpExecutor: executor, } return &Configuration{ - ApiURL: apiUrl, - ApiKey: apiKey, + ApiURL: params.ApiUrl, + ApiKey: params.ApiKey, API: a, }, nil } diff --git a/sdk-clients/spotprices/configuration_test.go b/sdk-clients/spotprices/configuration_test.go index 7d2098b..72408ec 100644 --- a/sdk-clients/spotprices/configuration_test.go +++ b/sdk-clients/spotprices/configuration_test.go @@ -7,7 +7,11 @@ import ( ) func TestNewConfigurationAPI(t *testing.T) { - configAPI, err := NewConfiguration(1, "https://api.example.com", "apikey123") + configAPI, err := NewConfiguration(ConfigurationParams{ + ChainId: 1, + ApiUrl: "https://api.example.com", + ApiKey: "apikey123", + }) assert.NoError(t, err) assert.NotNil(t, configAPI) diff --git a/sdk-clients/spotprices/examples/main.go b/sdk-clients/spotprices/examples/main.go index 106e230..bef5c8a 100644 --- a/sdk-clients/spotprices/examples/main.go +++ b/sdk-clients/spotprices/examples/main.go @@ -3,6 +3,7 @@ package main import ( "context" "fmt" + "log" "os" "time" @@ -31,13 +32,17 @@ const ( ) func main() { - config, err := spotprices.NewConfiguration(constants.EthereumChainId, "https://api.1inch.dev", devPortalToken) + config, err := spotprices.NewConfiguration(spotprices.ConfigurationParams{ + ChainId: constants.EthereumChainId, + ApiUrl: "https://api.1inch.dev", + ApiKey: devPortalToken, + }) if err != nil { - return + log.Fatalf("failed to create configuration: %v", err) } client, err := spotprices.NewClient(config) if err != nil { - return + log.Fatalf("failed to create client: %v", err) } ctx := context.Background() @@ -45,8 +50,7 @@ func main() { Currency: spotprices.GetWhitelistedTokensPricesParamsCurrency(spotprices.USD), }) if err != nil { - fmt.Println("failed to GetWhitelistedTokensPricesParams: %w", err) - return + log.Fatalf("failed to GetWhitelistedTokensPrices: %v", err) } fmt.Println("GetWhitelistedTokensPricesParams:", whitelistedTokensPrices) @@ -57,8 +61,7 @@ func main() { Tokens: []string{tokenAddress1, tokenAddress2}, }) if err != nil { - fmt.Println("failed to GetPricesForRequestedTokens: %w", err) - return + log.Fatalf("failed to GetPricesForRequestedTokens: %v", err) } fmt.Println("GetPricesForRequestedTokens:", requestedTokensPrices) @@ -69,8 +72,7 @@ func main() { Tokens: []string{tokenAddress1, tokenAddress2, tokenAddress3, tokenAddress4, tokenAddress5, tokenAddress6, tokenAddress7}, }) if err != nil { - fmt.Println("failed to GetPricesForRequestedTokensLarge: %w", err) - return + log.Fatalf("failed to GetPricesForRequestedTokensLarge: %v", err) } fmt.Println("GetPricesForRequestedTokensLarge:", requestedTokensPricesLarge) @@ -78,8 +80,7 @@ func main() { customCurrencies, err := client.GetCustomCurrenciesList(ctx) if err != nil { - fmt.Println("failed to GetCustomCurrenciesList: %w", err) - return + log.Fatalf("failed to GetCustomCurrenciesList: %v", err) } fmt.Println("GetCustomCurrenciesList:", customCurrencies) diff --git a/sdk-clients/txbroadcast/configuration.go b/sdk-clients/txbroadcast/configuration.go index eb729ed..17b68dd 100644 --- a/sdk-clients/txbroadcast/configuration.go +++ b/sdk-clients/txbroadcast/configuration.go @@ -1,7 +1,7 @@ package txbroadcast import ( - "github.com/1inch/1inch-sdk-go/internal/http-executor" + http_executor "github.com/1inch/1inch-sdk-go/internal/http-executor" ) type Configuration struct { @@ -10,20 +10,26 @@ type Configuration struct { API api } -func NewConfiguration(chainId uint64, apiUrl string, apiKey string) (*Configuration, error) { - executor, err := http_executor.DefaultHttpClient(apiUrl, apiKey) +type ConfigurationParams struct { + ChainId uint64 + ApiUrl string + ApiKey string +} + +func NewConfiguration(params ConfigurationParams) (*Configuration, error) { + executor, err := http_executor.DefaultHttpClient(params.ApiUrl, params.ApiKey) if err != nil { return nil, err } a := api{ - chainId: chainId, + chainId: params.ChainId, httpExecutor: executor, } return &Configuration{ - ApiURL: apiUrl, - ApiKey: apiKey, + ApiURL: params.ApiUrl, + ApiKey: params.ApiKey, API: a, }, nil } diff --git a/sdk-clients/txbroadcast/configuration_test.go b/sdk-clients/txbroadcast/configuration_test.go index 80d1d7d..9329bee 100644 --- a/sdk-clients/txbroadcast/configuration_test.go +++ b/sdk-clients/txbroadcast/configuration_test.go @@ -7,7 +7,11 @@ import ( ) func TestNewConfigurationAPI(t *testing.T) { - configAPI, err := NewConfiguration(1, "https://api.example.com", "apikey123") + configAPI, err := NewConfiguration(ConfigurationParams{ + ChainId: 1, + ApiUrl: "https://api.example.com", + ApiKey: "apikey123", + }) assert.NoError(t, err) assert.NotNil(t, configAPI) diff --git a/sdk-clients/txbroadcast/examples/main.go b/sdk-clients/txbroadcast/examples/main.go index 9de2245..a8bacdf 100644 --- a/sdk-clients/txbroadcast/examples/main.go +++ b/sdk-clients/txbroadcast/examples/main.go @@ -3,6 +3,7 @@ package main import ( "context" "fmt" + "log" "os" "time" @@ -21,13 +22,17 @@ var ( ) func main() { - config, err := txbroadcast.NewConfiguration(constants.EthereumChainId, "https://api.1inch.dev", devPortalToken) + config, err := txbroadcast.NewConfiguration(txbroadcast.ConfigurationParams{ + ChainId: constants.EthereumChainId, + ApiUrl: "https://api.1inch.dev", + ApiKey: devPortalToken, + }) if err != nil { - return + log.Fatalf("failed to create configuration: %v", err) } client, err := txbroadcast.NewClient(config) if err != nil { - return + log.Fatalf("failed to create client: %v", err) } ctx := context.Background() @@ -35,8 +40,7 @@ func main() { RawTransaction: "", }) if err != nil { - fmt.Println("failed to BroadcastPublicTransaction: %w", err) - return + log.Fatalf("failed to BroadcastPublicTransaction: %v", err) } fmt.Println("BroadcastPublicTransaction:", broadcastPublicResponse) @@ -46,8 +50,7 @@ func main() { RawTransaction: "", }) if err != nil { - fmt.Println("failed to BroadcastPrivateTransaction: %w", err) - return + log.Fatalf("failed to BroadcastPrivateTransaction: %v", err) } fmt.Println("BroadcastPrivateTransaction:", broadcastPrivateResponse)