diff --git a/.github/workflows/ark.unit.yaml b/.github/workflows/ark.unit.yaml index 285073b..34bfaa0 100755 --- a/.github/workflows/ark.unit.yaml +++ b/.github/workflows/ark.unit.yaml @@ -12,8 +12,8 @@ on: - "server/**" jobs: - test: - name: unit tests + test-server: + name: server unit tests runs-on: ubuntu-latest defaults: run: @@ -38,4 +38,26 @@ jobs: - run: go get -v -t -d ./... - name: unit testing run: make test - \ No newline at end of file + test-sdk: + name: sdk unit tests + runs-on: ubuntu-latest + defaults: + run: + working-directory: ./pkg/client-sdk + steps: + - uses: actions/setup-go@v3 + with: + go-version: ">1.17.2" + - uses: actions/checkout@v3 + - name: check linting + uses: golangci/golangci-lint-action@v3 + with: + version: v1.54 + working-directory: ./pkg/client-sdk + - name: check code integrity + uses: securego/gosec@master + with: + args: '-severity high -quiet ./...' + - run: go get -v -t -d ./... + - name: unit testing + run: make test \ No newline at end of file diff --git a/client/client.go b/client/client.go index f9338c7..d65f9f2 100644 --- a/client/client.go +++ b/client/client.go @@ -2,11 +2,14 @@ package main import ( "fmt" + "strings" "time" - arkgrpcclient "github.com/ark-network/ark-sdk/grpc" arkv1 "github.com/ark-network/ark/api-spec/protobuf/gen/ark/v1" "github.com/urfave/cli/v2" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials" + "google.golang.org/grpc/credentials/insecure" ) type vtxo struct { @@ -86,6 +89,29 @@ func getClientFromState(ctx *cli.Context) (arkv1.ArkServiceClient, func(), error } func getClient(addr string) (arkv1.ArkServiceClient, func(), error) { - client, cleanFn, err := arkgrpcclient.New(addr) - return client.Service(), cleanFn, err + creds := insecure.NewCredentials() + port := 80 + if strings.HasPrefix(addr, "https://") { + addr = strings.TrimPrefix(addr, "https://") + creds = credentials.NewTLS(nil) + port = 443 + } + if !strings.Contains(addr, ":") { + addr = fmt.Sprintf("%s:%d", addr, port) + } + conn, err := grpc.Dial(addr, grpc.WithTransportCredentials(creds)) + if err != nil { + return nil, nil, err + } + + client := arkv1.NewArkServiceClient(conn) + + closeFn := func() { + err := conn.Close() + if err != nil { + fmt.Printf("error closing connection: %s\n", err) + } + } + + return client, closeFn, nil } diff --git a/client/common.go b/client/common.go index 80eb91c..ff87492 100644 --- a/client/common.go +++ b/client/common.go @@ -326,7 +326,7 @@ func getTxBlocktime(ctx *cli.Context, txid string) (confirmed bool, blocktime in func getNetwork(ctx *cli.Context) (*common.Network, *network.Network) { state, err := getState(ctx) if err != nil { - return &common.TestNet, &network.Testnet + return &common.LiquidTestNet, &network.Testnet } net, ok := state[NETWORK] @@ -337,11 +337,11 @@ func getNetwork(ctx *cli.Context) (*common.Network, *network.Network) { } func networkFromString(net string) (*common.Network, *network.Network) { - if net == "testnet" { - return &common.TestNet, &network.Testnet + if net == common.LiquidTestNet.Name { + return &common.LiquidTestNet, &network.Testnet } - if net == "regtest" { - return &common.RegTest, &network.Regtest + if net == common.LiquidRegTest.Name { + return &common.LiquidRegTest, &network.Regtest } return &common.Liquid, &network.Liquid } diff --git a/client/go.mod b/client/go.mod index 681b790..e4149bf 100644 --- a/client/go.mod +++ b/client/go.mod @@ -6,19 +6,16 @@ replace github.com/ark-network/ark/common => ../common replace github.com/ark-network/ark => ../server -replace github.com/ark-network/ark-sdk => ../pkg/client-sdk - require ( github.com/ark-network/ark v0.0.0-00010101000000-000000000000 - github.com/ark-network/ark-sdk v0.0.0-00010101000000-000000000000 github.com/ark-network/ark/common v0.0.0 github.com/btcsuite/btcd v0.24.2 github.com/btcsuite/btcd/btcec/v2 v2.3.4 github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 github.com/urfave/cli/v2 v2.27.2 - golang.org/x/crypto v0.23.0 - golang.org/x/term v0.20.0 + golang.org/x/crypto v0.25.0 + golang.org/x/term v0.22.0 ) require ( @@ -35,11 +32,11 @@ require ( github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/vulpemventures/go-elements v0.5.3 github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 // indirect - golang.org/x/net v0.25.0 // indirect - golang.org/x/sys v0.20.0 // indirect - golang.org/x/text v0.15.0 // indirect + golang.org/x/net v0.27.0 // indirect + golang.org/x/sys v0.22.0 // indirect + golang.org/x/text v0.16.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect - google.golang.org/grpc v1.65.0 // indirect + google.golang.org/grpc v1.65.0 google.golang.org/protobuf v1.34.1 // indirect ) diff --git a/client/go.sum b/client/go.sum index c3338d9..cb4eae5 100644 --- a/client/go.sum +++ b/client/go.sum @@ -97,15 +97,15 @@ github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913/go.mod h1:4aEEwZQut golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -116,15 +116,15 @@ golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= -golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= +golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/client/init.go b/client/init.go index 48894a0..6894681 100644 --- a/client/init.go +++ b/client/init.go @@ -9,6 +9,7 @@ import ( "strings" arkv1 "github.com/ark-network/ark/api-spec/protobuf/gen/ark/v1" + "github.com/ark-network/ark/common" "github.com/btcsuite/btcd/btcec/v2" "github.com/decred/dcrd/dcrec/secp256k1/v4" "github.com/urfave/cli/v2" @@ -54,7 +55,8 @@ func initAction(ctx *cli.Context) error { if len(url) <= 0 { return fmt.Errorf("invalid ark url") } - if net != "liquid" && net != "testnet" && net != "regtest" { + if net != common.Liquid.Name && net != common.LiquidTestNet.Name && + net != common.LiquidRegTest.Name { return fmt.Errorf("invalid network") } diff --git a/common/encoding.go b/common/encoding.go index ed500d0..b272668 100644 --- a/common/encoding.go +++ b/common/encoding.go @@ -18,7 +18,7 @@ func EncodeAddress( err = fmt.Errorf("missing asp public key") return } - if hrp != Liquid.Addr && hrp != TestNet.Addr { + if hrp != Liquid.Addr && hrp != LiquidTestNet.Addr { err = fmt.Errorf("invalid prefix") return } @@ -40,7 +40,7 @@ func DecodeAddress( if err != nil { return } - if prefix != Liquid.Addr && prefix != TestNet.Addr { + if prefix != Liquid.Addr && prefix != LiquidTestNet.Addr && prefix != LiquidRegTest.Addr { err = fmt.Errorf("invalid prefix") return } diff --git a/common/network.go b/common/network.go index 8ef0eee..26d98c8 100644 --- a/common/network.go +++ b/common/network.go @@ -1,5 +1,7 @@ package common +import "strings" + type Network struct { Name string Addr string @@ -10,12 +12,31 @@ var Liquid = Network{ Addr: "ark", } -var TestNet = Network{ +var LiquidTestNet = Network{ + Name: "liquidtestnet", + Addr: "tark", +} + +var LiquidRegTest = Network{ + Name: "liquidregtest", + Addr: LiquidTestNet.Addr, +} + +var Bitcoin = Network{ + Name: "bitcoin", + Addr: "ark", +} + +var BitcoinTestNet = Network{ Name: "testnet", Addr: "tark", } -var RegTest = Network{ +var BitcoinRegTest = Network{ Name: "regtest", - Addr: TestNet.Addr, + Addr: BitcoinTestNet.Addr, +} + +func IsLiquid(network Network) bool { + return strings.Contains(network.Name, "liquid") } diff --git a/common/tree/script.go b/common/tree/script.go index a0374b7..687103c 100644 --- a/common/tree/script.go +++ b/common/tree/script.go @@ -9,6 +9,9 @@ import ( "github.com/btcsuite/btcd/btcec/v2/schnorr" "github.com/btcsuite/btcd/txscript" "github.com/decred/dcrd/dcrec/secp256k1/v4" + "github.com/vulpemventures/go-elements/address" + "github.com/vulpemventures/go-elements/network" + "github.com/vulpemventures/go-elements/payment" "github.com/vulpemventures/go-elements/taproot" ) @@ -60,7 +63,6 @@ func DecodeClosure(script []byte) (Closure, error) { } return nil, fmt.Errorf("invalid closure script") - } func (f *ForfeitClosure) Leaf() (*taproot.TapElementsLeaf, error) { @@ -281,6 +283,59 @@ func (c *UnrollClosure) Decode(script []byte) (valid bool, err error) { return true, nil } +func ComputeVtxoTaprootScript( + userPubkey, aspPubkey *secp256k1.PublicKey, exitDelay uint, net network.Network, +) (*secp256k1.PublicKey, *taproot.TapscriptElementsProof, []byte, string, error) { + redeemClosure := &CSVSigClosure{ + Pubkey: userPubkey, + Seconds: exitDelay, + } + + forfeitClosure := &ForfeitClosure{ + Pubkey: userPubkey, + AspPubkey: aspPubkey, + } + + redeemLeaf, err := redeemClosure.Leaf() + if err != nil { + return nil, nil, nil, "", err + } + + forfeitLeaf, err := forfeitClosure.Leaf() + if err != nil { + return nil, nil, nil, "", err + } + + vtxoTaprootTree := taproot.AssembleTaprootScriptTree( + *redeemLeaf, *forfeitLeaf, + ) + root := vtxoTaprootTree.RootNode.TapHash() + + unspendableKey := UnspendableKey() + vtxoTaprootKey := taproot.ComputeTaprootOutputKey(unspendableKey, root[:]) + + redeemLeafHash := redeemLeaf.TapHash() + proofIndex := vtxoTaprootTree.LeafProofIndex[redeemLeafHash] + proof := vtxoTaprootTree.LeafMerkleProofs[proofIndex] + + pay, err := payment.FromTweakedKey(vtxoTaprootKey, &net, nil) + if err != nil { + return nil, nil, nil, "", err + } + + addr, err := pay.TaprootAddress() + if err != nil { + return nil, nil, nil, "", err + } + + script, err := address.ToOutputScript(addr) + if err != nil { + return nil, nil, nil, "", err + } + + return vtxoTaprootKey, &proof, script, addr, nil +} + func decodeIntrospectionScript( script []byte, expectedIndex byte, isVerify bool, ) (bool, *secp256k1.PublicKey, uint64, error) { diff --git a/docker-compose.regtest.yml b/docker-compose.regtest.yml index 5807132..5bbab42 100644 --- a/docker-compose.regtest.yml +++ b/docker-compose.regtest.yml @@ -27,7 +27,7 @@ services: environment: - ARK_WALLET_ADDR=oceand:18000 - ARK_ROUND_INTERVAL=10 - - ARK_NETWORK=regtest + - ARK_NETWORK=liquidregtest - ARK_LOG_LEVEL=5 - ARK_ROUND_LIFETIME=512 - ARK_DB_TYPE=sqlite diff --git a/pkg/client-sdk/Makefile b/pkg/client-sdk/Makefile index 0c9f18a..8d718ec 100644 --- a/pkg/client-sdk/Makefile +++ b/pkg/client-sdk/Makefile @@ -1,6 +1,21 @@ -genrest: - swagger generate client -f ./../../server/api-spec/openapi/swagger/ark/v1/admin.swagger.json -t ./rest/admin --client-package=arkadminrestclient - swagger generate client -f ./../../server/api-spec/openapi/swagger/ark/v1/service.swagger.json -t ./rest/service --client-package=arkservicerestclient +.PHONY: genrest test vet lint +## genrest: compiles rest client from stub with https://github.com/go-swagger/go-swagger +genrest: + @echo "Generating rest client from stub..." + @swagger generate client -f ../../server/api-spec/openapi/swagger/ark/v1/service.swagger.json -t ./client/rest/service --client-package=arkservice + +## test: runs unit tests +test: + @echo "Running unit tests..." + @go test -v -count=1 -race ./... + +## vet: code analysis vet: - go vet ./... \ No newline at end of file + @echo "Running code analysis..." + @go vet ./... + +## lint: lint codebase +lint: + @echo "Linting code..." + @golangci-lint run --fix \ No newline at end of file diff --git a/pkg/client-sdk/ark_sdk.go b/pkg/client-sdk/ark_sdk.go index b1899e1..5906710 100644 --- a/pkg/client-sdk/ark_sdk.go +++ b/pkg/client-sdk/ark_sdk.go @@ -4,13 +4,17 @@ import ( "bytes" "context" "encoding/hex" - "errors" "fmt" "math" "strings" "sync" "time" + "github.com/ark-network/ark-sdk/client" + "github.com/ark-network/ark-sdk/explorer" + "github.com/ark-network/ark-sdk/internal/utils" + "github.com/ark-network/ark-sdk/store" + "github.com/ark-network/ark-sdk/wallet" arkv1 "github.com/ark-network/ark/api-spec/protobuf/gen/ark/v1" "github.com/ark-network/ark/common" "github.com/ark-network/ark/common/tree" @@ -26,21 +30,32 @@ import ( ) const ( - minRelayFee = 30 - DUST = 450 + DUST = 450 + // transport + GrpcClient = client.GrpcClient + RestClient = client.RestClient + // wallet + SingleKeyWallet = wallet.SingleKeyWallet + // store + FileStore = store.FileStore + InMemoryStore = store.InMemoryStore + // explorer + BitcoinExplorer = explorer.BitcoinExplorer + LiquidExplorer = explorer.LiquidExplorer ) var ( - explorerUrlMap = map[string]string{ - network.Liquid.Name: "https://blockstream.info/liquid/api", - network.Testnet.Name: "https://blockstream.info/liquidtestnet/api", - network.Regtest.Name: "http://localhost:3001", - } + ErrAlreadyInitialized = fmt.Errorf("client already initialized") + ErrNotInitialized = fmt.Errorf("client not initialized") ) type ArkClient interface { - Connect(ctx context.Context) error - Balance(ctx context.Context, computeExpiryDetails bool) (*BalanceResp, error) + GetConfigData(ctx context.Context) (*store.StoreData, error) + Init(ctx context.Context, args InitArgs) error + InitWithWallet(ctx context.Context, args InitWithWalletArgs) error + Unlock(ctx context.Context, password string) error + Lock(ctx context.Context, password string) error + Balance(ctx context.Context, computeExpiryDetails bool) (*Balance, error) Onboard(ctx context.Context, amount uint64) (string, error) Receive(ctx context.Context) (string, string, error) SendOnChain(ctx context.Context, receivers []Receiver) (string, error) @@ -53,239 +68,306 @@ type ArkClient interface { ) (string, error) } -func New( - ctx context.Context, - wallet Wallet, - configStore ConfigStore, -) (ArkClient, error) { - aspUrl, err := configStore.GetAspUrl(ctx) - if err != nil { - return nil, err - } - if len(aspUrl) <= 0 { - return nil, errors.New("invalid ark url") - } - - protocol, err := configStore.GetTransportProtocol(ctx) - if err != nil { - return nil, err - } - - return &arkClient{ - aspUrl: aspUrl, - protocol: protocol, - wallet: wallet, - initiated: false, - innerClient: nil, - configStore: configStore, - }, nil -} - type arkClient struct { - aspUrl string - aspPubKey []byte - roundLifeTime int - unilateralExitDelay int - net string - explorerUrl string - protocol TransportProtocol - - wallet Wallet - - initiated bool - innerClient arkTransportClient - - explorerSvc Explorer - configStore ConfigStore + *store.StoreData + wallet wallet.WalletService + store store.ConfigStore + explorer explorer.Explorer + client client.ASPClient } -const ( - Grpc TransportProtocol = iota - Rest -) - -type TransportProtocol int - -func (a *arkClient) Connect(ctx context.Context) error { - if a.initiated { - return nil +func New(storeSvc store.ConfigStore) (ArkClient, error) { + data, err := storeSvc.GetData(context.Background()) + if err != nil { + return nil, err + } + if data != nil { + return nil, ErrAlreadyInitialized } - transportClient, err := newArkTransportClient( - a.aspUrl, a.protocol, a.explorerSvc, + return &arkClient{store: storeSvc}, nil +} + +func Load(storeSvc store.ConfigStore) (ArkClient, error) { + if storeSvc == nil { + return nil, fmt.Errorf("missin store service") + } + + data, err := storeSvc.GetData(context.Background()) + if err != nil { + return nil, err + } + if data == nil { + return nil, ErrNotInitialized + } + + clientSvc, err := utils.GetClient( + supportedClients, data.ClientType, data.AspUrl, ) if err != nil { - return err + return nil, fmt.Errorf("failed to setup transport client: %s", err) } - a.innerClient = transportClient - resp, err := a.innerClient.getInfo(ctx) + explorerSvc, err := utils.GetExplorer(supportedNetworks, data.Network.Name) if err != nil { - return err + return nil, fmt.Errorf("failed to setup explorer: %s", err) } - net := resp.GetNetwork() - if net != "liquid" && net != "testnet" && net != "regtest" { - return fmt.Errorf("invalid network") - } - - explorerUrl := explorerUrlMap[net] - _, liquidNet := networkFromString(net) - if err := testEsploraEndpoint(liquidNet, explorerUrl); err != nil { - return fmt.Errorf("failed to connect with explorerSvc: %s", err) - } - - explorerSvc := NewExplorer(explorerUrl, net) - a.innerClient.setExplorerSvc(explorerSvc) - - aspPubKey := resp.GetPubkey() - aspPubKeyBytes, err := hex.DecodeString(aspPubKey) + walletSvc, err := utils.GetWallet(storeSvc, data, supportedWallets) if err != nil { + return nil, fmt.Errorf("faile to setup wallet: %s", err) + } + + return &arkClient{data, walletSvc, storeSvc, explorerSvc, clientSvc}, nil +} + +func LoadWithWallet( + storeSvc store.ConfigStore, walletSvc wallet.WalletService, +) (ArkClient, error) { + if storeSvc == nil { + return nil, fmt.Errorf("missin store service") + } + if walletSvc == nil { + return nil, fmt.Errorf("missin wallet service") + } + + data, err := storeSvc.GetData(context.Background()) + if err != nil { + return nil, err + } + if data == nil { + return nil, ErrNotInitialized + } + + clientSvc, err := utils.GetClient( + supportedClients, data.ClientType, data.AspUrl, + ) + if err != nil { + return nil, fmt.Errorf("failed to setup transport client: %s", err) + } + + explorerSvc, err := utils.GetExplorer(supportedNetworks, data.Network.Name) + if err != nil { + return nil, fmt.Errorf("failed to setup explorer: %s", err) + } + + return &arkClient{data, walletSvc, storeSvc, explorerSvc, clientSvc}, nil +} + +func (a *arkClient) GetConfigData( + _ context.Context, +) (*store.StoreData, error) { + if a.StoreData == nil { + return nil, fmt.Errorf("client sdk not initialized") + } + return a.StoreData, nil +} + +func (a *arkClient) InitWithWallet( + ctx context.Context, args InitWithWalletArgs, +) error { + if err := args.validate(); err != nil { + return fmt.Errorf("invalid args: %s", err) + } + + clientSvc, err := utils.GetClient( + supportedClients, args.ClientType, args.AspUrl, + ) + if err != nil { + return fmt.Errorf("failed to setup client: %s", err) + } + + resp, err := clientSvc.GetInfo(ctx) + if err != nil { + return fmt.Errorf("failed to connect to asp: %s", err) + } + + explorerSvc, err := utils.GetExplorer(supportedNetworks, resp.GetNetwork()) + if err != nil { + return fmt.Errorf("failed to setup explorer: %s", err) + } + + network := utils.NetworkFromString(resp.GetNetwork()) + + buf, err := hex.DecodeString(resp.GetPubkey()) + if err != nil { + return fmt.Errorf("failed to parse asp pubkey: %s", err) + } + aspPubkey, err := secp256k1.ParsePubKey(buf) + if err != nil { + return fmt.Errorf("failed to parse asp pubkey: %s", err) + } + + storeData := store.StoreData{ + AspUrl: args.AspUrl, + AspPubkey: aspPubkey, + WalletType: args.Wallet.GetType(), + ClientType: args.ClientType, + Network: network, + RoundLifetime: resp.GetRoundLifetime(), + UnilateralExitDelay: resp.GetUnilateralExitDelay(), + MinRelayFee: uint64(resp.GetMinRelayFee()), + } + if err := a.store.AddData(ctx, storeData); err != nil { return err } - a.configStore.SetAspPubKeyHex(aspPubKey) - a.configStore.SetNetwork(net) - a.configStore.SetExplorerUrl(explorerUrl) + if _, err := args.Wallet.Create(ctx, args.Password, args.Seed); err != nil { + //nolint:all + a.store.CleanData(ctx) + return err + } - a.net = net - a.explorerUrl = explorerUrl - a.explorerSvc = explorerSvc - a.aspPubKey = aspPubKeyBytes - a.roundLifeTime = int(resp.RoundLifetime) - a.unilateralExitDelay = int(resp.UnilateralExitDelay) - a.initiated = true + a.StoreData = &storeData + a.wallet = args.Wallet + a.explorer = explorerSvc + a.client = clientSvc return nil } -type BalanceResp struct { - OnchainBalance OnchainBalanceResp `json:"onchain_balance"` - OffchainBalance OffchainBalanceResp `json:"offchain_balance"` +func (a *arkClient) Init( + ctx context.Context, args InitArgs, +) error { + if err := args.validate(); err != nil { + return fmt.Errorf("invalid args: %s", err) + } + + clientSvc, err := utils.GetClient( + supportedClients, args.ClientType, args.AspUrl, + ) + if err != nil { + return fmt.Errorf("failed to setup client: %s", err) + } + + resp, err := clientSvc.GetInfo(ctx) + if err != nil { + return fmt.Errorf("failed to connect to asp: %s", err) + } + + explorerSvc, err := utils.GetExplorer(supportedNetworks, resp.GetNetwork()) + if err != nil { + return fmt.Errorf("failed to setup explorer: %s", err) + } + + network := utils.NetworkFromString(resp.GetNetwork()) + + buf, err := hex.DecodeString(resp.GetPubkey()) + if err != nil { + return fmt.Errorf("failed to parse asp pubkey: %s", err) + } + aspPubkey, err := secp256k1.ParsePubKey(buf) + if err != nil { + return fmt.Errorf("failed to parse asp pubkey: %s", err) + } + + storeData := store.StoreData{ + AspUrl: args.AspUrl, + AspPubkey: aspPubkey, + WalletType: args.WalletType, + ClientType: args.ClientType, + Network: network, + RoundLifetime: resp.GetRoundLifetime(), + UnilateralExitDelay: resp.GetUnilateralExitDelay(), + MinRelayFee: uint64(resp.GetMinRelayFee()), + } + walletSvc, err := utils.GetWallet(a.store, &storeData, supportedWallets) + if err != nil { + return err + } + + if err := a.store.AddData(ctx, storeData); err != nil { + return err + } + + if _, err := walletSvc.Create(ctx, args.Password, args.Seed); err != nil { + //nolint:all + a.store.CleanData(ctx) + return err + } + + a.StoreData = &storeData + a.wallet = walletSvc + a.explorer = explorerSvc + a.client = clientSvc + + return nil } -type OnchainBalanceResp struct { - SpendableAmount uint64 `json:"spendable_amount"` - LockedAmount []LockedOnchainBalance `json:"locked_amount,omitempty"` +func (a *arkClient) Unlock(ctx context.Context, pasword string) error { + _, err := a.wallet.Unlock(ctx, pasword) + return err } -type LockedOnchainBalance struct { - SpendableAt string `json:"spendable_at"` - Amount uint64 `json:"amount"` -} - -type OffchainBalanceResp struct { - Total uint64 `json:"total"` - NextExpiration string `json:"next_expiration,omitempty"` - Details []OffchainDetails `json:"details"` -} - -type OffchainDetails struct { - ExpiryTime string `json:"expiry_time"` - Amount uint64 `json:"amount"` -} - -type balanceRes struct { - offchainBalance uint64 - onchainSpendableBalance uint64 - onchainLockedBalance map[int64]uint64 - offchainBalanceByExpiration map[int64]uint64 - err error +func (a *arkClient) Lock(ctx context.Context, pasword string) error { + return a.wallet.Lock(ctx, pasword) } func (a *arkClient) Balance( ctx context.Context, computeExpiryDetails bool, -) (*BalanceResp, error) { - offchainAddr, onchainAddr, redemptionAddr, err := getAddress( - a.wallet.PubKeySerializeCompressed(), a.aspPubKey, int64(a.unilateralExitDelay), a.net, - ) +) (*Balance, error) { + offchainAddrs, onchainAddrs, redeemAddrs, err := a.wallet.GetAddresses(ctx) if err != nil { return nil, err } - _, liquidNet := networkFromString(a.net) - wg := &sync.WaitGroup{} - wg.Add(3) + wg.Add(3 * len(offchainAddrs)) chRes := make(chan balanceRes, 3) - go func() { - defer wg.Done() - balance, amountByExpiration, err := a.innerClient.getOffchainBalance( - ctx, offchainAddr, computeExpiryDetails, - ) - if err != nil { - chRes <- balanceRes{ - 0, - 0, - nil, - nil, - err, + for i := range offchainAddrs { + offchainAddr := offchainAddrs[i] + onchainAddr := onchainAddrs[i] + redeemAddr := redeemAddrs[i] + go func(addr string) { + defer wg.Done() + balance, amountByExpiration, err := a.client.GetOffchainBalance( + ctx, addr, a.explorer, + ) + if err != nil { + chRes <- balanceRes{err: err} + return } - return - } - chRes <- balanceRes{ - balance, - 0, - nil, - amountByExpiration, - nil, - } - }() - - go func() { - defer wg.Done() - balance, err := a.explorerSvc.GetBalance(onchainAddr, liquidNet.AssetID) - if err != nil { chRes <- balanceRes{ - 0, - 0, - nil, - nil, - err, + offchainBalance: balance, + offchainBalanceByExpiration: amountByExpiration, } - return - } - chRes <- balanceRes{ - 0, - balance, - nil, - nil, - nil, - } - }() + }(offchainAddr) - go func() { - defer wg.Done() + go func(addr string) { + defer wg.Done() + balance, err := a.explorer.GetBalance(addr) + if err != nil { + chRes <- balanceRes{err: err} + return + } + chRes <- balanceRes{onchainSpendableBalance: balance} + }(onchainAddr) + + go func(addr string) { + defer wg.Done() + + spendableBalance, lockedBalance, err := a.explorer.GetRedeemedVtxosBalance( + addr, a.UnilateralExitDelay, + ) + if err != nil { + chRes <- balanceRes{err: err} + return + } - spendableBalance, lockedBalance, err := a.explorerSvc.GetRedeemedVtxosBalance( - redemptionAddr, int64(a.unilateralExitDelay), - ) - if err != nil { chRes <- balanceRes{ - 0, - 0, - nil, - nil, - err, + onchainSpendableBalance: spendableBalance, + onchainLockedBalance: lockedBalance, + err: err, } - return - } - - chRes <- balanceRes{ - 0, - spendableBalance, - lockedBalance, - nil, - err, - } - }() + }(redeemAddr) + } wg.Wait() lockedOnchainBalance := []LockedOnchainBalance{} - details := make([]OffchainDetails, 0) + details := make([]VtxoDetails, 0) offchainBalance, onchainBalance := uint64(0), uint64(0) nextExpiration := int64(0) count := 0 @@ -305,10 +387,10 @@ func (a *arkClient) Balance( nextExpiration = timestamp } - fancyTime := time.Unix(timestamp, 0).Format("2006-01-02 15:04:05") + fancyTime := time.Unix(timestamp, 0).Format(time.RFC3339) details = append( details, - OffchainDetails{ + VtxoDetails{ ExpiryTime: fancyTime, Amount: amount, }, @@ -317,7 +399,7 @@ func (a *arkClient) Balance( } if res.onchainLockedBalance != nil { for timestamp, amount := range res.onchainLockedBalance { - fancyTime := time.Unix(timestamp, 0).Format("2006-01-02 15:04:05") + fancyTime := time.Unix(timestamp, 0).Format(time.RFC3339) lockedOnchainBalance = append( lockedOnchainBalance, LockedOnchainBalance{ @@ -354,16 +436,16 @@ func (a *arkClient) Balance( fancyTimeExpiration = fmt.Sprintf("%d hours", int(hours)) } } else { - fancyTimeExpiration = t.Format("2006-01-02 15:04:05") + fancyTimeExpiration = t.Format(time.RFC3339) } } - response := &BalanceResp{ - OnchainBalance: OnchainBalanceResp{ + response := &Balance{ + OnchainBalance: OnchainBalance{ SpendableAmount: onchainBalance, LockedAmount: lockedOnchainBalance, }, - OffchainBalance: OffchainBalanceResp{ + OffchainBalance: OffchainBalance{ Total: offchainBalance, NextExpiration: fancyTimeExpiration, Details: details, @@ -380,32 +462,32 @@ func (a *arkClient) Onboard( return "", fmt.Errorf("invalid amount to onboard %d", amount) } - _, net := networkFromString(a.net) - userPubKey := a.wallet.PubKeySerializeCompressed() - - congestionTreeLeaf := tree.Receiver{ - Pubkey: hex.EncodeToString(userPubKey), - Amount: amount, + offchainAddr, _, err := a.wallet.NewAddress(ctx, false) + if err != nil { + return "", err } - aspPubkey, err := secp256k1.ParsePubKey(a.aspPubKey) - if err != nil { - return "", nil + net := a.explorer.GetNetwork() + _, userPubkey, aspPubkey, _ := common.DecodeAddress(offchainAddr) + userPubkeyStr := hex.EncodeToString(userPubkey.SerializeCompressed()) + congestionTreeLeaf := tree.Receiver{ + Pubkey: userPubkeyStr, + Amount: amount, } treeFactoryFn, sharedOutputScript, sharedOutputAmount, err := tree.CraftCongestionTree( net.AssetID, aspPubkey, []tree.Receiver{congestionTreeLeaf}, - minRelayFee, - int64(a.roundLifeTime), - int64(a.unilateralExitDelay), + a.MinRelayFee, + a.RoundLifetime, + a.UnilateralExitDelay, ) if err != nil { return "", err } - pay, err := payment.FromScript(sharedOutputScript, net, nil) + pay, err := payment.FromScript(sharedOutputScript, &net, nil) if err != nil { return "", err } @@ -420,7 +502,7 @@ func (a *arkClient) Onboard( Amount: sharedOutputAmount, } - pset, err := a.sendOnchain([]Receiver{onchainReceiver}) + pset, err := a.sendOnchain(ctx, []Receiver{onchainReceiver}) if err != nil { return "", err } @@ -437,19 +519,223 @@ func (a *arkClient) Onboard( return "", err } - _, err = a.innerClient.onboard(ctx, &arkv1.OnboardRequest{ + if _, err = a.client.Onboard(ctx, &arkv1.OnboardRequest{ BoardingTx: pset, - CongestionTree: castCongestionTree(congestionTree), - UserPubkey: hex.EncodeToString(userPubKey), - }) - if err != nil { + CongestionTree: utils.CastCongestionTree(congestionTree), + UserPubkey: userPubkeyStr, + }); err != nil { return "", err } return txid, nil } -func (a *arkClient) sendOnchain(receivers []Receiver) (string, error) { +func (a *arkClient) SendOnChain( + ctx context.Context, receivers []Receiver, +) (string, error) { + for _, receiver := range receivers { + if !receiver.isOnchain() { + return "", fmt.Errorf("invalid receiver address '%s': must be onchain", receiver.To) + } + } + + return a.sendOnchain(ctx, receivers) +} + +func (a *arkClient) SendOffChain( + ctx context.Context, + withExpiryCoinselect bool, receivers []Receiver, +) (string, error) { + for _, receiver := range receivers { + if receiver.isOnchain() { + return "", fmt.Errorf("invalid receiver address '%s': must be offchain", receiver.To) + } + } + + return a.sendOffchain(ctx, withExpiryCoinselect, receivers) +} + +func (a *arkClient) UnilateralRedeem(ctx context.Context) error { + if a.wallet.IsLocked() { + return fmt.Errorf("wallet is locked") + } + + offchainAddrs, _, _, err := a.wallet.GetAddresses(ctx) + if err != nil { + return err + } + + vtxos := make([]*client.Vtxo, 0) + for _, offchainAddr := range offchainAddrs { + fetchedVtxos, err := a.client.GetSpendableVtxos(ctx, offchainAddr, nil) + if err != nil { + return err + } + vtxos = append(vtxos, fetchedVtxos...) + } + + totalVtxosAmount := uint64(0) + for _, vtxo := range vtxos { + totalVtxosAmount += vtxo.Amount + } + + // transactionsMap avoid duplicates + transactionsMap := make(map[string]struct{}, 0) + transactions := make([]string, 0) + + redeemBranches, err := a.client.GetRedeemBranches(ctx, vtxos, a.explorer) + if err != nil { + return err + } + + for _, branch := range redeemBranches { + branchTxs, err := branch.RedeemPath() + if err != nil { + return err + } + + for _, txHex := range branchTxs { + if _, ok := transactionsMap[txHex]; !ok { + transactions = append(transactions, txHex) + transactionsMap[txHex] = struct{}{} + } + } + } + + for i, txHex := range transactions { + for { + txid, err := a.explorer.Broadcast(txHex) + if err != nil { + if strings.Contains(strings.ToLower(err.Error()), "bad-txns-inputs-missingorspent") { + time.Sleep(1 * time.Second) + } else { + return err + } + } + + if len(txid) > 0 { + log.Infof("(%d/%d) broadcasted tx %s", i+1, len(transactions), txid) + break + } + } + } + + return nil +} + +func (a *arkClient) CollaborativeRedeem( + ctx context.Context, + addr string, amount uint64, withExpiryCoinselect bool, +) (string, error) { + if a.wallet.IsLocked() { + return "", fmt.Errorf("wallet is locked") + } + + if _, err := address.ToOutputScript(addr); err != nil { + return "", fmt.Errorf("invalid onchain address") + } + + addrNet, err := address.NetworkForAddress(addr) + if err != nil { + return "", fmt.Errorf("invalid onchain address: unknown network") + } + net := a.explorer.GetNetwork() + if net.Name != addrNet.Name { + return "", fmt.Errorf("invalid onchain address: must be for %s network", net.Name) + } + + if isConf, _ := address.IsConfidential(addr); isConf { + info, _ := address.FromConfidential(addr) + addr = info.Address + } + + offchainAddrs, _, _, err := a.wallet.GetAddresses(ctx) + if err != nil { + return "", err + } + + receivers := []*arkv1.Output{ + { + Address: addr, + Amount: amount, + }, + } + + var explorerSvc explorer.Explorer + if withExpiryCoinselect { + explorerSvc = a.explorer + } + vtxos := make([]*client.Vtxo, 0) + for _, offchainAddr := range offchainAddrs { + fetchedVtxos, err := a.client.GetSpendableVtxos(ctx, offchainAddr, explorerSvc) + if err != nil { + return "", err + } + vtxos = append(vtxos, fetchedVtxos...) + } + + selectedCoins, changeAmount, err := utils.CoinSelect( + vtxos, amount, DUST, withExpiryCoinselect, + ) + if err != nil { + return "", err + } + + if changeAmount > 0 { + offchainAddr, _, err := a.wallet.NewAddress(ctx, true) + if err != nil { + return "", err + } + receivers = append(receivers, &arkv1.Output{ + Address: offchainAddr, + Amount: changeAmount, + }) + } + + inputs := make([]*arkv1.Input, 0, len(selectedCoins)) + + for _, coin := range selectedCoins { + inputs = append(inputs, &arkv1.Input{ + Txid: coin.Txid, + Vout: coin.VOut, + }) + } + + registerResponse, err := a.client.RegisterPayment(ctx, &arkv1.RegisterPaymentRequest{ + Inputs: inputs, + }) + if err != nil { + return "", err + } + + _, err = a.client.ClaimPayment(ctx, &arkv1.ClaimPaymentRequest{ + Id: registerResponse.GetId(), + Outputs: receivers, + }) + if err != nil { + return "", err + } + + poolTxID, err := a.handleRoundStream( + ctx, + registerResponse.GetId(), + selectedCoins, + receivers, + ) + if err != nil { + return "", err + } + + return poolTxID, nil +} + +func (a *arkClient) sendOnchain( + ctx context.Context, receivers []Receiver, +) (string, error) { + if a.wallet.IsLocked() { + return "", fmt.Errorf("wallet is locked") + } + pset, err := psetv2.New(nil, nil, nil) if err != nil { return "", err @@ -459,7 +745,7 @@ func (a *arkClient) sendOnchain(receivers []Receiver) (string, error) { return "", err } - _, net := networkFromString(a.net) + net := a.explorer.GetNetwork() targetAmount := uint64(0) for _, receiver := range receivers { @@ -485,20 +771,18 @@ func (a *arkClient) sendOnchain(receivers []Receiver) (string, error) { } utxos, delayedUtxos, change, err := a.coinSelectOnchain( - targetAmount, nil, + ctx, targetAmount, nil, ) if err != nil { return "", err } - if err := a.addInputs(updater, utxos, delayedUtxos, net); err != nil { + if err := a.addInputs(ctx, updater, utxos, delayedUtxos, net); err != nil { return "", err } if change > 0 { - _, changeAddr, _, err := getAddress( - a.wallet.PubKeySerializeCompressed(), a.aspPubKey, int64(a.unilateralExitDelay), a.net, - ) + _, changeAddr, err := a.wallet.NewAddress(ctx, true) if err != nil { return "", err } @@ -537,20 +821,18 @@ func (a *arkClient) sendOnchain(receivers []Receiver) (string, error) { } // reselect the difference selected, delayedSelected, newChange, err := a.coinSelectOnchain( - feeAmount-change, append(utxos, delayedUtxos...), + ctx, feeAmount-change, append(utxos, delayedUtxos...), ) if err != nil { return "", err } - if err := a.addInputs(updater, selected, delayedSelected, net); err != nil { + if err := a.addInputs(ctx, updater, selected, delayedSelected, net); err != nil { return "", err } if newChange > 0 { - _, changeAddr, _, err := getAddress( - a.wallet.PubKeySerializeCompressed(), a.aspPubKey, int64(a.unilateralExitDelay), a.net, - ) + _, changeAddr, err := a.wallet.NewAddress(ctx, true) if err != nil { return "", err } @@ -585,7 +867,7 @@ func (a *arkClient) sendOnchain(receivers []Receiver) (string, error) { if err != nil { return "", err } - signedTx, err := a.wallet.SignTransaction(a.explorerSvc, tx) + signedTx, err := a.wallet.SignTransaction(ctx, a.explorer, tx) if err != nil { return "", err } @@ -605,14 +887,19 @@ func (a *arkClient) sendOnchain(receivers []Receiver) (string, error) { func (a *arkClient) sendOffchain( ctx context.Context, withExpiryCoinselect bool, receivers []Receiver, ) (string, error) { - offchainAddr, _, _, err := getAddress( - a.wallet.PubKeySerializeCompressed(), a.aspPubKey, int64(a.unilateralExitDelay), a.net, - ) + if a.wallet.IsLocked() { + return "", fmt.Errorf("wallet is locked") + } + + offchainAddrs, _, _, err := a.wallet.GetAddresses(ctx) if err != nil { return "", err } + if len(offchainAddrs) <= 0 { + return "", fmt.Errorf("no funds detected") + } - _, _, aspPubKey, err := common.DecodeAddress(offchainAddr) + _, _, aspPubKey, err := common.DecodeAddress(offchainAddrs[0]) if err != nil { return "", err } @@ -643,16 +930,32 @@ func (a *arkClient) sendOffchain( sumOfReceivers += receiver.Amount } - vtxos, err := a.innerClient.getSpendableVtxos(ctx, offchainAddr, withExpiryCoinselect) - if err != nil { - return "", err + var explorerSvc explorer.Explorer + if withExpiryCoinselect { + explorerSvc = a.explorer } - selectedCoins, changeAmount, err := coinSelect(vtxos, sumOfReceivers, withExpiryCoinselect) + + vtxos := make([]*client.Vtxo, 0) + for _, offchainAddr := range offchainAddrs { + fetchedVtxos, err := a.client.GetSpendableVtxos(ctx, offchainAddr, explorerSvc) + if err != nil { + return "", err + } + vtxos = append(vtxos, fetchedVtxos...) + } + + selectedCoins, changeAmount, err := utils.CoinSelect( + vtxos, sumOfReceivers, DUST, withExpiryCoinselect, + ) if err != nil { return "", err } if changeAmount > 0 { + offchainAddr, _, err := a.wallet.NewAddress(ctx, true) + if err != nil { + return "", err + } changeReceiver := &arkv1.Output{ Address: offchainAddr, Amount: changeAmount, @@ -664,19 +967,19 @@ func (a *arkClient) sendOffchain( for _, coin := range selectedCoins { inputs = append(inputs, &arkv1.Input{ - Txid: coin.txid, - Vout: coin.vout, + Txid: coin.Txid, + Vout: coin.VOut, }) } - registerResponse, err := a.innerClient.registerPayment( + registerResponse, err := a.client.RegisterPayment( ctx, &arkv1.RegisterPaymentRequest{Inputs: inputs}, ) if err != nil { return "", err } - _, err = a.innerClient.claimPayment(ctx, &arkv1.ClaimPaymentRequest{ + _, err = a.client.ClaimPayment(ctx, &arkv1.ClaimPaymentRequest{ Id: registerResponse.GetId(), Outputs: receiversOutput, }) @@ -700,15 +1003,15 @@ func (a *arkClient) sendOffchain( } func (a *arkClient) addInputs( - updater *psetv2.Updater, utxos, delayedUtxos []utxo, net *network.Network, + ctx context.Context, updater *psetv2.Updater, utxos, delayedUtxos []explorer.Utxo, net network.Network, ) error { - _, onchainAddr, _, err := getAddress( - a.wallet.PubKeySerializeCompressed(), a.aspPubKey, int64(a.unilateralExitDelay), a.net, - ) + offchainAddr, onchainAddr, err := a.wallet.NewAddress(ctx, false) if err != nil { return err } + _, userPubkey, aspPubkey, _ := common.DecodeAddress(offchainAddr) + changeScript, err := address.ToOutputScript(onchainAddr) if err != nil { return err @@ -749,33 +1052,13 @@ func (a *arkClient) addInputs( } if len(delayedUtxos) > 0 { - aspPubkey, err := secp256k1.ParsePubKey(a.aspPubKey) - if err != nil { - return err - } - - vtxoTapKey, leafProof, err := computeVtxoTaprootScript( - a.wallet.PubKey(), aspPubkey, uint(a.unilateralExitDelay), + _, leafProof, script, _, err := tree.ComputeVtxoTaprootScript( + userPubkey, aspPubkey, uint(a.UnilateralExitDelay), net, ) if err != nil { return err } - pay, err := payment.FromTweakedKey(vtxoTapKey, net, nil) - if err != nil { - return err - } - - addr, err := pay.TaprootAddress() - if err != nil { - return err - } - - script, err := address.ToOutputScript(addr) - if err != nil { - return err - } - for _, utxo := range delayedUtxos { if err := addVtxoInput( updater, @@ -783,7 +1066,7 @@ func (a *arkClient) addInputs( Txid: utxo.Txid, TxIndex: utxo.Vout, }, - uint(a.unilateralExitDelay), + uint(a.UnilateralExitDelay), leafProof, ); err != nil { return err @@ -848,9 +1131,7 @@ func (r *Receiver) isOnchain() bool { } func (a *arkClient) Receive(ctx context.Context) (string, string, error) { - offchainAddr, onchainAddr, _, err := getAddress( - a.wallet.PubKeySerializeCompressed(), a.aspPubKey, int64(a.unilateralExitDelay), a.net, - ) + offchainAddr, onchainAddr, err := a.wallet.NewAddress(ctx, false) if err != nil { return "", "", err } @@ -858,48 +1139,27 @@ func (a *arkClient) Receive(ctx context.Context) (string, string, error) { return offchainAddr, onchainAddr, nil } -func (a *arkClient) SendOnChain( - ctx context.Context, receivers []Receiver, -) (string, error) { - for _, receiver := range receivers { - if !receiver.isOnchain() { - return "", fmt.Errorf("invalid receiver address '%s': must be onchain", receiver.To) - } - } - - return a.sendOnchain(receivers) -} - -func (a *arkClient) SendOffChain( - ctx context.Context, withExpiryCoinselect bool, receivers []Receiver, -) (string, error) { - for _, receiver := range receivers { - if receiver.isOnchain() { - return "", fmt.Errorf("invalid receiver address '%s': must be offchain", receiver.To) - } - } - - return a.sendOffchain(ctx, withExpiryCoinselect, receivers) -} - func (a *arkClient) coinSelectOnchain( - targetAmount uint64, exclude []utxo, -) ([]utxo, []utxo, uint64, error) { - _, onchainAddr, _, err := getAddress( - a.wallet.PubKeySerializeCompressed(), a.aspPubKey, int64(a.unilateralExitDelay), a.net, - ) + ctx context.Context, targetAmount uint64, exclude []explorer.Utxo, +) ([]explorer.Utxo, []explorer.Utxo, uint64, error) { + offchainAddrs, onchainAddrs, _, err := a.wallet.GetAddresses(ctx) if err != nil { return nil, nil, 0, err } + net := a.explorer.GetNetwork() - fromExplorer, err := a.explorerSvc.GetUtxos(onchainAddr) - if err != nil { - return nil, nil, 0, err + fetchedUtxos := make([]explorer.Utxo, 0) + for _, onchainAddr := range onchainAddrs { + utxos, err := a.explorer.GetUtxos(onchainAddr) + if err != nil { + return nil, nil, 0, err + } + fetchedUtxos = append(fetchedUtxos, utxos...) } - utxos := make([]utxo, 0) + utxos := make([]explorer.Utxo, 0) selectedAmount := uint64(0) - for _, utxo := range fromExplorer { + for _, utxo := range fetchedUtxos { if selectedAmount >= targetAmount { break } @@ -918,43 +1178,31 @@ func (a *arkClient) coinSelectOnchain( return utxos, nil, selectedAmount - targetAmount, nil } - aspPubkey, err := secp256k1.ParsePubKey(a.aspPubKey) - if err != nil { - return nil, nil, 0, err + fetchedUtxos = make([]explorer.Utxo, 0) + for _, offchainAddr := range offchainAddrs { + _, userPubkey, aspPubkey, _ := common.DecodeAddress(offchainAddr) + _, _, _, addr, err := tree.ComputeVtxoTaprootScript( + userPubkey, aspPubkey, uint(a.UnilateralExitDelay), net, + ) + if err != nil { + return nil, nil, 0, err + } + + utxos, err = a.explorer.GetUtxos(addr) + if err != nil { + return nil, nil, 0, err + } + fetchedUtxos = append(fetchedUtxos, utxos...) } - vtxoTapKey, _, err := computeVtxoTaprootScript( - a.wallet.PubKey(), aspPubkey, uint(a.unilateralExitDelay), - ) - if err != nil { - return nil, nil, 0, err - } - - _, net := networkFromString(a.net) - - pay, err := payment.FromTweakedKey(vtxoTapKey, net, nil) - if err != nil { - return nil, nil, 0, err - } - - addr, err := pay.TaprootAddress() - if err != nil { - return nil, nil, 0, err - } - - fromExplorer, err = a.explorerSvc.GetUtxos(addr) - if err != nil { - return nil, nil, 0, err - } - - delayedUtxos := make([]utxo, 0) - for _, utxo := range fromExplorer { + delayedUtxos := make([]explorer.Utxo, 0) + for _, utxo := range fetchedUtxos { if selectedAmount >= targetAmount { break } availableAt := time.Unix(utxo.Status.Blocktime, 0).Add( - time.Duration(a.unilateralExitDelay) * time.Second, + time.Duration(a.UnilateralExitDelay) * time.Second, ) if availableAt.After(time.Now()) { continue @@ -979,163 +1227,10 @@ func (a *arkClient) coinSelectOnchain( return utxos, delayedUtxos, selectedAmount - targetAmount, nil } -func (a *arkClient) UnilateralRedeem(ctx context.Context) error { - offchainAddr, _, _, err := getAddress( - a.wallet.PubKeySerializeCompressed(), a.aspPubKey, int64(a.unilateralExitDelay), a.net, - ) - if err != nil { - return err - } - - vtxos, err := a.innerClient.getSpendableVtxos(ctx, offchainAddr, false) - if err != nil { - return err - } - - totalVtxosAmount := uint64(0) - - for _, vtxo := range vtxos { - totalVtxosAmount += vtxo.amount - } - - // transactionsMap avoid duplicates - transactionsMap := make(map[string]struct{}, 0) - transactions := make([]string, 0) - - redeemBranches, err := a.innerClient.getRedeemBranches(ctx, a.explorerSvc, vtxos) - if err != nil { - return err - } - - for _, branch := range redeemBranches { - branchTxs, err := branch.redeemPath() - if err != nil { - return err - } - - for _, txHex := range branchTxs { - if _, ok := transactionsMap[txHex]; !ok { - transactions = append(transactions, txHex) - transactionsMap[txHex] = struct{}{} - } - } - } - - for i, txHex := range transactions { - for { - txid, err := a.explorerSvc.Broadcast(txHex) - if err != nil { - if strings.Contains(strings.ToLower(err.Error()), "bad-txns-inputs-missingorspent") { - time.Sleep(1 * time.Second) - } else { - return err - } - } - - if len(txid) > 0 { - log.Infof("(%d/%d) broadcasted tx %s", i+1, len(transactions), txid) - break - } - } - } - - return nil -} - -func (a *arkClient) CollaborativeRedeem( - ctx context.Context, addr string, amount uint64, withExpiryCoinselect bool, -) (string, error) { - if _, err := address.ToOutputScript(addr); err != nil { - return "", fmt.Errorf("invalid onchain address") - } - - net, err := address.NetworkForAddress(addr) - if err != nil { - return "", fmt.Errorf("invalid onchain address: unknown network") - } - _, liquidNet := networkFromString(a.net) - if net.Name != liquidNet.Name { - return "", fmt.Errorf("invalid onchain address: must be for %s network", liquidNet.Name) - } - - if isConf, _ := address.IsConfidential(addr); isConf { - info, _ := address.FromConfidential(addr) - addr = info.Address - } - - offchainAddr, _, _, err := getAddress( - a.wallet.PubKeySerializeCompressed(), a.aspPubKey, int64(a.unilateralExitDelay), a.net, - ) - - if err != nil { - return "", err - } - - receivers := []*arkv1.Output{ - { - Address: addr, - Amount: amount, - }, - } - - vtxos, err := a.innerClient.getSpendableVtxos(ctx, offchainAddr, withExpiryCoinselect) - if err != nil { - return "", err - } - - selectedCoins, changeAmount, err := coinSelect(vtxos, amount, withExpiryCoinselect) - if err != nil { - return "", err - } - - if changeAmount > 0 { - receivers = append(receivers, &arkv1.Output{ - Address: offchainAddr, - Amount: changeAmount, - }) - } - - inputs := make([]*arkv1.Input, 0, len(selectedCoins)) - - for _, coin := range selectedCoins { - inputs = append(inputs, &arkv1.Input{ - Txid: coin.txid, - Vout: coin.vout, - }) - } - - registerResponse, err := a.innerClient.registerPayment(ctx, &arkv1.RegisterPaymentRequest{ - Inputs: inputs, - }) - if err != nil { - return "", err - } - - _, err = a.innerClient.claimPayment(ctx, &arkv1.ClaimPaymentRequest{ - Id: registerResponse.GetId(), - Outputs: receivers, - }) - if err != nil { - return "", err - } - - poolTxID, err := a.handleRoundStream( - ctx, - registerResponse.GetId(), - selectedCoins, - receivers, - ) - if err != nil { - return "", err - } - - return poolTxID, nil -} - func (a *arkClient) ping( ctx context.Context, req *arkv1.PingRequest, ) func() { - _, err := a.innerClient.ping(ctx, req) + _, err := a.client.Ping(ctx, req) if err != nil { return nil } @@ -1145,7 +1240,7 @@ func (a *arkClient) ping( go func(t *time.Ticker) { for range t.C { // nolint - a.innerClient.ping(ctx, req) + a.client.Ping(ctx, req) } }(ticker) diff --git a/pkg/client-sdk/client/client.go b/pkg/client-sdk/client/client.go new file mode 100644 index 0000000..6c2df02 --- /dev/null +++ b/pkg/client-sdk/client/client.go @@ -0,0 +1,60 @@ +package client + +import ( + "context" + "time" + + "github.com/ark-network/ark-sdk/explorer" + arkv1 "github.com/ark-network/ark/api-spec/protobuf/gen/ark/v1" +) + +const ( + GrpcClient = "grpc" + RestClient = "rest" +) + +type RoundEventChannel struct { + Event *arkv1.GetEventStreamResponse + Err error +} + +type Vtxo struct { + Amount uint64 + Txid string + VOut uint32 + RoundTxid string + ExpiresAt *time.Time +} + +type ASPClient interface { + GetInfo(ctx context.Context) (*arkv1.GetInfoResponse, error) + ListVtxos(ctx context.Context, addr string) (*arkv1.ListVtxosResponse, error) + GetSpendableVtxos( + ctx context.Context, addr string, explorerSvc explorer.Explorer, + ) ([]*Vtxo, error) + GetRound(ctx context.Context, txID string) (*arkv1.GetRoundResponse, error) + GetRoundByID(ctx context.Context, roundID string) (*arkv1.GetRoundByIdResponse, error) + GetRedeemBranches( + ctx context.Context, vtxos []*Vtxo, explorerSvc explorer.Explorer, + ) (map[string]*RedeemBranch, error) + GetOffchainBalance( + ctx context.Context, addr string, explorerSvc explorer.Explorer, + ) (uint64, map[int64]uint64, error) + Onboard( + ctx context.Context, req *arkv1.OnboardRequest, + ) (*arkv1.OnboardResponse, error) + RegisterPayment( + ctx context.Context, req *arkv1.RegisterPaymentRequest, + ) (*arkv1.RegisterPaymentResponse, error) + ClaimPayment( + ctx context.Context, req *arkv1.ClaimPaymentRequest, + ) (*arkv1.ClaimPaymentResponse, error) + GetEventStream( + ctx context.Context, paymentID string, req *arkv1.GetEventStreamRequest, + ) (<-chan RoundEventChannel, error) + Ping(ctx context.Context, req *arkv1.PingRequest) (*arkv1.PingResponse, error) + FinalizePayment( + ctx context.Context, req *arkv1.FinalizePaymentRequest, + ) (*arkv1.FinalizePaymentResponse, error) + Close() +} diff --git a/pkg/client-sdk/client/grpc/client.go b/pkg/client-sdk/client/grpc/client.go new file mode 100644 index 0000000..f2e213d --- /dev/null +++ b/pkg/client-sdk/client/grpc/client.go @@ -0,0 +1,277 @@ +package grpcclient + +import ( + "context" + "fmt" + "strings" + "time" + + "github.com/ark-network/ark-sdk/client" + "github.com/ark-network/ark-sdk/explorer" + arkv1 "github.com/ark-network/ark/api-spec/protobuf/gen/ark/v1" + "github.com/ark-network/ark/common/tree" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials" + "google.golang.org/grpc/credentials/insecure" +) + +type grpcClient struct { + conn *grpc.ClientConn + svc arkv1.ArkServiceClient + eventsCh chan client.RoundEventChannel +} + +func NewClient(aspUrl string) (client.ASPClient, error) { + if len(aspUrl) <= 0 { + return nil, fmt.Errorf("missing asp url") + } + + creds := insecure.NewCredentials() + port := 80 + if strings.HasPrefix(aspUrl, "https://") { + aspUrl = strings.TrimPrefix(aspUrl, "https://") + creds = credentials.NewTLS(nil) + port = 443 + } + if !strings.Contains(aspUrl, ":") { + aspUrl = fmt.Sprintf("%s:%d", aspUrl, port) + } + conn, err := grpc.NewClient(aspUrl, grpc.WithTransportCredentials(creds)) + if err != nil { + return nil, err + } + + svc := arkv1.NewArkServiceClient(conn) + eventsCh := make(chan client.RoundEventChannel) + + return &grpcClient{conn, svc, eventsCh}, nil +} + +func (c *grpcClient) Close() { + //nolint:all + c.conn.Close() +} + +func (a *grpcClient) GetEventStream( + ctx context.Context, paymentID string, req *arkv1.GetEventStreamRequest, +) (<-chan client.RoundEventChannel, error) { + stream, err := a.svc.GetEventStream(ctx, req) + if err != nil { + return nil, err + } + + go func() { + defer close(a.eventsCh) + + for { + resp, err := stream.Recv() + if err != nil { + a.eventsCh <- client.RoundEventChannel{Err: err} + return + } + + a.eventsCh <- client.RoundEventChannel{Event: resp} + } + }() + + return a.eventsCh, nil +} + +func (a *grpcClient) GetInfo(ctx context.Context) (*arkv1.GetInfoResponse, error) { + return a.svc.GetInfo(ctx, &arkv1.GetInfoRequest{}) +} + +func (a *grpcClient) ListVtxos( + ctx context.Context, + addr string, +) (*arkv1.ListVtxosResponse, error) { + return a.svc.ListVtxos(ctx, &arkv1.ListVtxosRequest{Address: addr}) +} + +func (a *grpcClient) GetRound( + ctx context.Context, txID string, +) (*arkv1.GetRoundResponse, error) { + return a.svc.GetRound(ctx, &arkv1.GetRoundRequest{Txid: txID}) +} + +func (a *grpcClient) GetSpendableVtxos( + ctx context.Context, addr string, explorerSvc explorer.Explorer, +) ([]*client.Vtxo, error) { + allVtxos, err := a.ListVtxos(ctx, addr) + if err != nil { + return nil, err + } + + vtxos := make([]*client.Vtxo, 0, len(allVtxos.GetSpendableVtxos())) + for _, v := range allVtxos.GetSpendableVtxos() { + var expireAt *time.Time + if v.ExpireAt > 0 { + t := time.Unix(v.ExpireAt, 0) + expireAt = &t + } + if v.Swept { + continue + } + vtxos = append(vtxos, &client.Vtxo{ + Amount: v.Receiver.Amount, + Txid: v.Outpoint.Txid, + VOut: v.Outpoint.Vout, + RoundTxid: v.PoolTxid, + ExpiresAt: expireAt, + }) + } + + if explorerSvc == nil { + return vtxos, nil + } + + redeemBranches, err := a.GetRedeemBranches(ctx, vtxos, explorerSvc) + if err != nil { + return nil, err + } + + for vtxoTxid, branch := range redeemBranches { + expiration, err := branch.ExpiresAt() + if err != nil { + return nil, err + } + + for i, vtxo := range vtxos { + if vtxo.Txid == vtxoTxid { + vtxos[i].ExpiresAt = expiration + break + } + } + } + + return vtxos, nil +} + +func (a *grpcClient) GetRedeemBranches( + ctx context.Context, vtxos []*client.Vtxo, explorerSvc explorer.Explorer, +) (map[string]*client.RedeemBranch, error) { + congestionTrees := make(map[string]tree.CongestionTree, 0) + redeemBranches := make(map[string]*client.RedeemBranch, 0) + + for _, vtxo := range vtxos { + if _, ok := congestionTrees[vtxo.RoundTxid]; !ok { + round, err := a.GetRound(ctx, vtxo.RoundTxid) + if err != nil { + return nil, err + } + + treeFromRound := round.GetRound().GetCongestionTree() + congestionTree, err := toCongestionTree(treeFromRound) + if err != nil { + return nil, err + } + + congestionTrees[vtxo.RoundTxid] = congestionTree + } + + redeemBranch, err := client.NewRedeemBranch( + explorerSvc, congestionTrees[vtxo.RoundTxid], vtxo, + ) + if err != nil { + return nil, err + } + + redeemBranches[vtxo.Txid] = redeemBranch + } + + return redeemBranches, nil +} + +func (a *grpcClient) GetOffchainBalance( + ctx context.Context, addr string, explorerSvc explorer.Explorer, +) (uint64, map[int64]uint64, error) { + amountByExpiration := make(map[int64]uint64, 0) + + vtxos, err := a.GetSpendableVtxos(ctx, addr, explorerSvc) + if err != nil { + return 0, nil, err + } + var balance uint64 + for _, vtxo := range vtxos { + balance += vtxo.Amount + + if vtxo.ExpiresAt != nil { + expiration := vtxo.ExpiresAt.Unix() + + if _, ok := amountByExpiration[expiration]; !ok { + amountByExpiration[expiration] = 0 + } + + amountByExpiration[expiration] += vtxo.Amount + } + } + + return balance, amountByExpiration, nil +} + +func (a *grpcClient) Onboard( + ctx context.Context, req *arkv1.OnboardRequest, +) (*arkv1.OnboardResponse, error) { + return a.svc.Onboard(ctx, req) +} + +func (a *grpcClient) RegisterPayment( + ctx context.Context, req *arkv1.RegisterPaymentRequest, +) (*arkv1.RegisterPaymentResponse, error) { + return a.svc.RegisterPayment(ctx, req) +} + +func (a *grpcClient) ClaimPayment( + ctx context.Context, req *arkv1.ClaimPaymentRequest, +) (*arkv1.ClaimPaymentResponse, error) { + return a.svc.ClaimPayment(ctx, req) +} + +func (a *grpcClient) Ping( + ctx context.Context, req *arkv1.PingRequest, +) (*arkv1.PingResponse, error) { + return a.svc.Ping(ctx, req) +} + +func (a *grpcClient) FinalizePayment( + ctx context.Context, req *arkv1.FinalizePaymentRequest, +) (*arkv1.FinalizePaymentResponse, error) { + return a.svc.FinalizePayment(ctx, req) +} + +func (a *grpcClient) GetRoundByID( + ctx context.Context, roundID string, +) (*arkv1.GetRoundByIdResponse, error) { + return a.svc.GetRoundById(ctx, &arkv1.GetRoundByIdRequest{ + Id: roundID, + }) +} + +func toCongestionTree(treeFromProto *arkv1.Tree) (tree.CongestionTree, error) { + levels := make(tree.CongestionTree, 0, len(treeFromProto.Levels)) + + for _, level := range treeFromProto.Levels { + nodes := make([]tree.Node, 0, len(level.Nodes)) + + for _, node := range level.Nodes { + nodes = append(nodes, tree.Node{ + Txid: node.Txid, + Tx: node.Tx, + ParentTxid: node.ParentTxid, + Leaf: false, + }) + } + + levels = append(levels, nodes) + } + + for j, treeLvl := range levels { + for i, node := range treeLvl { + if len(levels.Children(node.Txid)) == 0 { + levels[j][i].Leaf = true + } + } + } + + return levels, nil +} diff --git a/pkg/client-sdk/unilateral_redeem.go b/pkg/client-sdk/client/redeem.go similarity index 69% rename from pkg/client-sdk/unilateral_redeem.go rename to pkg/client-sdk/client/redeem.go index 314e5ff..6db6eb1 100644 --- a/pkg/client-sdk/unilateral_redeem.go +++ b/pkg/client-sdk/client/redeem.go @@ -1,9 +1,10 @@ -package arksdk +package client import ( "fmt" "time" + "github.com/ark-network/ark-sdk/explorer" "github.com/ark-network/ark/common/tree" "github.com/btcsuite/btcd/btcec/v2/schnorr" "github.com/decred/dcrd/dcrec/secp256k1/v4" @@ -11,19 +12,19 @@ import ( "github.com/vulpemventures/go-elements/taproot" ) -type redeemBranch struct { - vtxo *vtxo +type RedeemBranch struct { + vtxo *Vtxo branch []*psetv2.Pset internalKey *secp256k1.PublicKey sweepClosure *taproot.TapElementsLeaf lifetime time.Duration - explorer Explorer + explorer explorer.Explorer } -func newRedeemBranch( - explorer Explorer, - congestionTree tree.CongestionTree, vtxo vtxo, -) (*redeemBranch, error) { +func NewRedeemBranch( + explorer explorer.Explorer, + congestionTree tree.CongestionTree, vtxo *Vtxo, +) (*RedeemBranch, error) { sweepClosure, seconds, err := findSweepClosure(congestionTree) if err != nil { return nil, err @@ -34,7 +35,7 @@ func newRedeemBranch( return nil, err } - nodes, err := congestionTree.Branch(vtxo.txid) + nodes, err := congestionTree.Branch(vtxo.Txid) if err != nil { return nil, err } @@ -54,8 +55,8 @@ func newRedeemBranch( return nil, err } - return &redeemBranch{ - vtxo: &vtxo, + return &RedeemBranch{ + vtxo: vtxo, branch: branch, internalKey: internalKey, sweepClosure: sweepClosure, @@ -65,10 +66,10 @@ func newRedeemBranch( } // RedeemPath returns the list of transactions to broadcast in order to access the vtxo output -func (r *redeemBranch) redeemPath() ([]string, error) { +func (r *RedeemBranch) RedeemPath() ([]string, error) { transactions := make([]string, 0, len(r.branch)) - offchainPath, err := r.offchainPath() + offchainPath, err := r.OffchainPath() if err != nil { return nil, err } @@ -115,10 +116,10 @@ func (r *redeemBranch) redeemPath() ([]string, error) { return transactions, nil } -func (r *redeemBranch) expireAt(explorer Explorer) (*time.Time, error) { +func (r *RedeemBranch) ExpiresAt() (*time.Time, error) { lastKnownBlocktime := int64(0) - confirmed, blocktime, _ := explorer.GetTxBlockTime(r.vtxo.poolTxid) + confirmed, blocktime, _ := r.explorer.GetTxBlockTime(r.vtxo.RoundTxid) if confirmed { lastKnownBlocktime = blocktime @@ -131,7 +132,7 @@ func (r *redeemBranch) expireAt(explorer Explorer) (*time.Time, error) { utx, _ := pset.UnsignedTx() txid := utx.TxHash().String() - confirmed, blocktime, err := explorer.GetTxBlockTime(txid) + confirmed, blocktime, err := r.explorer.GetTxBlockTime(txid) if err != nil { break } @@ -149,7 +150,7 @@ func (r *redeemBranch) expireAt(explorer Explorer) (*time.Time, error) { } // offchainPath checks for transactions of the branch onchain and returns only the offchain part -func (r *redeemBranch) offchainPath() ([]*psetv2.Pset, error) { +func (r *RedeemBranch) OffchainPath() ([]*psetv2.Pset, error) { offchainPath := append([]*psetv2.Pset{}, r.branch...) for i := len(r.branch) - 1; i >= 0; i-- { @@ -178,3 +179,39 @@ func (r *redeemBranch) offchainPath() ([]*psetv2.Pset, error) { return offchainPath, nil } + +func findSweepClosure( + congestionTree tree.CongestionTree, +) (*taproot.TapElementsLeaf, uint, error) { + root, err := congestionTree.Root() + if err != nil { + return nil, 0, err + } + + // find the sweep closure + tx, err := psetv2.NewPsetFromBase64(root.Tx) + if err != nil { + return nil, 0, err + } + + var seconds uint + var sweepClosure *taproot.TapElementsLeaf + for _, tapLeaf := range tx.Inputs[0].TapLeafScript { + closure := &tree.CSVSigClosure{} + valid, err := closure.Decode(tapLeaf.Script) + if err != nil { + continue + } + + if valid && closure.Seconds > seconds { + seconds = closure.Seconds + sweepClosure = &tapLeaf.TapElementsLeaf + } + } + + if sweepClosure == nil { + return nil, 0, fmt.Errorf("sweep closure not found") + } + + return sweepClosure, seconds, nil +} diff --git a/pkg/client-sdk/client/rest/client.go b/pkg/client-sdk/client/rest/client.go new file mode 100644 index 0000000..1cfa761 --- /dev/null +++ b/pkg/client-sdk/client/rest/client.go @@ -0,0 +1,672 @@ +package restclient + +import ( + "context" + "fmt" + "net/url" + "strconv" + "time" + + "github.com/ark-network/ark-sdk/client" + "github.com/ark-network/ark-sdk/client/rest/service/arkservice" + "github.com/ark-network/ark-sdk/client/rest/service/arkservice/ark_service" + "github.com/ark-network/ark-sdk/client/rest/service/models" + "github.com/ark-network/ark-sdk/explorer" + arkv1 "github.com/ark-network/ark/api-spec/protobuf/gen/ark/v1" + "github.com/ark-network/ark/common/tree" + httptransport "github.com/go-openapi/runtime/client" + "github.com/go-openapi/strfmt" + "github.com/vulpemventures/go-elements/psetv2" +) + +type restClient struct { + svc ark_service.ClientService + eventsCh chan client.RoundEventChannel + requestTimeout time.Duration +} + +func NewClient(aspUrl string) (client.ASPClient, error) { + if len(aspUrl) <= 0 { + return nil, fmt.Errorf("missing asp url") + } + svc, err := newRestClient(aspUrl) + if err != nil { + return nil, err + } + eventsCh := make(chan client.RoundEventChannel) + reqTimeout := 15 * time.Second + + return &restClient{svc, eventsCh, reqTimeout}, nil +} + +func (c *restClient) Close() {} + +func (a *restClient) GetEventStream( + ctx context.Context, paymentID string, req *arkv1.GetEventStreamRequest, +) (<-chan client.RoundEventChannel, error) { + go func(payID string) { + defer close(a.eventsCh) + + timeout := time.After(a.requestTimeout) + + for { + select { + case <-timeout: + a.eventsCh <- client.RoundEventChannel{ + Err: fmt.Errorf("timeout reached"), + } + return + default: + resp, err := a.Ping(ctx, &arkv1.PingRequest{ + PaymentId: payID, + }) + if err != nil { + a.eventsCh <- client.RoundEventChannel{ + Err: err, + } + return + } + + if resp.GetEvent() != nil { + levels := make([]*arkv1.TreeLevel, 0, len(resp.GetEvent().GetCongestionTree().GetLevels())) + for _, l := range resp.GetEvent().GetCongestionTree().GetLevels() { + nodes := make([]*arkv1.Node, 0, len(l.Nodes)) + for _, n := range l.Nodes { + nodes = append(nodes, &arkv1.Node{ + Txid: n.Txid, + Tx: n.Tx, + ParentTxid: n.ParentTxid, + }) + } + levels = append(levels, &arkv1.TreeLevel{ + Nodes: nodes, + }) + } + a.eventsCh <- client.RoundEventChannel{ + Event: &arkv1.GetEventStreamResponse{ + Event: &arkv1.GetEventStreamResponse_RoundFinalization{ + RoundFinalization: &arkv1.RoundFinalizationEvent{ + Id: resp.GetEvent().GetId(), + PoolTx: resp.GetEvent().GetPoolTx(), + ForfeitTxs: resp.GetEvent().GetForfeitTxs(), + CongestionTree: &arkv1.Tree{ + Levels: levels, + }, + Connectors: resp.GetEvent().GetConnectors(), + }, + }, + }, + } + + for { + roundID := resp.GetEvent().GetId() + round, err := a.GetRoundByID(ctx, roundID) + if err != nil { + a.eventsCh <- client.RoundEventChannel{ + Err: err, + } + return + } + + if round.GetRound().GetStage() == arkv1.RoundStage_ROUND_STAGE_FINALIZED { + ptx, _ := psetv2.NewPsetFromBase64(round.GetRound().GetPoolTx()) + utx, _ := ptx.UnsignedTx() + a.eventsCh <- client.RoundEventChannel{ + Event: &arkv1.GetEventStreamResponse{ + Event: &arkv1.GetEventStreamResponse_RoundFinalized{ + RoundFinalized: &arkv1.RoundFinalizedEvent{ + PoolTxid: utx.TxHash().String(), + }, + }, + }, + } + return + } + + if round.GetRound().GetStage() == arkv1.RoundStage_ROUND_STAGE_FAILED { + a.eventsCh <- client.RoundEventChannel{ + Event: &arkv1.GetEventStreamResponse{ + Event: &arkv1.GetEventStreamResponse_RoundFailed{ + RoundFailed: &arkv1.RoundFailed{ + Id: round.GetRound().GetId(), + }, + }, + }, + } + return + } + + time.Sleep(1 * time.Second) + } + } + + time.Sleep(1 * time.Second) + } + } + }(paymentID) + + return a.eventsCh, nil +} + +func (a *restClient) GetInfo( + ctx context.Context, +) (*arkv1.GetInfoResponse, error) { + resp, err := a.svc.ArkServiceGetInfo(ark_service.NewArkServiceGetInfoParams()) + if err != nil { + return nil, err + } + + roundLifetime, err := strconv.Atoi(resp.Payload.RoundLifetime) + if err != nil { + return nil, err + } + + unilateralExitDelay, err := strconv.Atoi(resp.Payload.UnilateralExitDelay) + if err != nil { + return nil, err + } + + roundInterval, err := strconv.Atoi(resp.Payload.RoundInterval) + if err != nil { + return nil, err + } + + minRelayFee, err := strconv.Atoi(resp.Payload.MinRelayFee) + if err != nil { + return nil, err + } + + return &arkv1.GetInfoResponse{ + Pubkey: resp.Payload.Pubkey, + RoundLifetime: int64(roundLifetime), + UnilateralExitDelay: int64(unilateralExitDelay), + RoundInterval: int64(roundInterval), + Network: resp.Payload.Network, + MinRelayFee: int64(minRelayFee), + }, nil +} + +func (a *restClient) ListVtxos( + ctx context.Context, addr string, +) (*arkv1.ListVtxosResponse, error) { + resp, err := a.svc.ArkServiceListVtxos( + ark_service.NewArkServiceListVtxosParams().WithAddress(addr), + ) + if err != nil { + return nil, err + } + + vtxos := make([]*arkv1.Vtxo, 0, len(resp.Payload.SpendableVtxos)) + for _, v := range resp.Payload.SpendableVtxos { + expAt, err := strconv.Atoi(v.ExpireAt) + if err != nil { + return nil, err + } + + amount, err := strconv.Atoi(v.Receiver.Amount) + if err != nil { + return nil, err + } + + vtxos = append(vtxos, &arkv1.Vtxo{ + Outpoint: &arkv1.Input{ + Txid: v.Outpoint.Txid, + Vout: uint32(v.Outpoint.Vout), + }, + Receiver: &arkv1.Output{ + Address: v.Receiver.Address, + Amount: uint64(amount), + }, + Spent: v.Spent, + PoolTxid: v.PoolTxid, + SpentBy: v.SpentBy, + ExpireAt: int64(expAt), + Swept: v.Swept, + }) + } + + return &arkv1.ListVtxosResponse{ + SpendableVtxos: vtxos, + }, nil +} + +func (a *restClient) GetRound( + ctx context.Context, txID string, +) (*arkv1.GetRoundResponse, error) { + resp, err := a.svc.ArkServiceGetRound( + ark_service.NewArkServiceGetRoundParams().WithTxid(txID), + ) + if err != nil { + return nil, err + } + + start, err := strconv.Atoi(resp.Payload.Round.Start) + if err != nil { + return nil, err + } + + end, err := strconv.Atoi(resp.Payload.Round.End) + if err != nil { + return nil, err + } + + levels := make([]*arkv1.TreeLevel, 0, len(resp.Payload.Round.CongestionTree.Levels)) + for _, l := range resp.Payload.Round.CongestionTree.Levels { + nodes := make([]*arkv1.Node, 0, len(l.Nodes)) + for _, n := range l.Nodes { + nodes = append(nodes, &arkv1.Node{ + Txid: n.Txid, + Tx: n.Tx, + ParentTxid: n.ParentTxid, + }) + } + levels = append(levels, &arkv1.TreeLevel{ + Nodes: nodes, + }) + } + + return &arkv1.GetRoundResponse{ + Round: &arkv1.Round{ + Id: resp.Payload.Round.ID, + Start: int64(start), + End: int64(end), + PoolTx: resp.Payload.Round.PoolTx, + CongestionTree: &arkv1.Tree{ + Levels: levels, + }, + ForfeitTxs: resp.Payload.Round.ForfeitTxs, + Connectors: resp.Payload.Round.Connectors, + }, + }, nil +} + +func (a *restClient) GetSpendableVtxos( + ctx context.Context, addr string, explorerSvc explorer.Explorer, +) ([]*client.Vtxo, error) { + allVtxos, err := a.ListVtxos(ctx, addr) + if err != nil { + return nil, err + } + + vtxos := make([]*client.Vtxo, 0, len(allVtxos.GetSpendableVtxos())) + for _, v := range allVtxos.GetSpendableVtxos() { + var expireAt *time.Time + if v.ExpireAt > 0 { + t := time.Unix(v.ExpireAt, 0) + expireAt = &t + } + if v.Swept { + continue + } + vtxos = append(vtxos, &client.Vtxo{ + Amount: v.Receiver.Amount, + Txid: v.Outpoint.Txid, + VOut: v.Outpoint.Vout, + RoundTxid: v.PoolTxid, + ExpiresAt: expireAt, + }) + } + + if explorerSvc == nil { + return vtxos, nil + } + + redeemBranches, err := a.GetRedeemBranches(ctx, vtxos, explorerSvc) + if err != nil { + return nil, err + } + + for vtxoTxid, branch := range redeemBranches { + expiration, err := branch.ExpiresAt() + if err != nil { + return nil, err + } + + for i, vtxo := range vtxos { + if vtxo.Txid == vtxoTxid { + vtxos[i].ExpiresAt = expiration + break + } + } + } + + return vtxos, nil +} + +func (a *restClient) GetRedeemBranches( + ctx context.Context, vtxos []*client.Vtxo, explorerSvc explorer.Explorer, +) (map[string]*client.RedeemBranch, error) { + congestionTrees := make(map[string]tree.CongestionTree, 0) + redeemBranches := make(map[string]*client.RedeemBranch, 0) + + for _, vtxo := range vtxos { + if _, ok := congestionTrees[vtxo.RoundTxid]; !ok { + round, err := a.GetRound(ctx, vtxo.RoundTxid) + if err != nil { + return nil, err + } + + treeFromRound := round.GetRound().GetCongestionTree() + congestionTree, err := toCongestionTree(treeFromRound) + if err != nil { + return nil, err + } + + congestionTrees[vtxo.RoundTxid] = congestionTree + } + + redeemBranch, err := client.NewRedeemBranch( + explorerSvc, congestionTrees[vtxo.RoundTxid], vtxo, + ) + if err != nil { + return nil, err + } + + redeemBranches[vtxo.Txid] = redeemBranch + } + + return redeemBranches, nil +} + +func (a *restClient) GetOffchainBalance( + ctx context.Context, addr string, explorerSvc explorer.Explorer, +) (uint64, map[int64]uint64, error) { + amountByExpiration := make(map[int64]uint64, 0) + + vtxos, err := a.GetSpendableVtxos(ctx, addr, explorerSvc) + if err != nil { + return 0, nil, err + } + var balance uint64 + for _, vtxo := range vtxos { + balance += vtxo.Amount + + if vtxo.ExpiresAt != nil { + expiration := vtxo.ExpiresAt.Unix() + + if _, ok := amountByExpiration[expiration]; !ok { + amountByExpiration[expiration] = 0 + } + + amountByExpiration[expiration] += vtxo.Amount + } + } + + return balance, amountByExpiration, nil +} + +func (a *restClient) Onboard( + ctx context.Context, req *arkv1.OnboardRequest, +) (*arkv1.OnboardResponse, error) { + levels := make([]*models.V1TreeLevel, 0, len(req.GetCongestionTree().GetLevels())) + for _, l := range req.GetCongestionTree().GetLevels() { + nodes := make([]*models.V1Node, 0, len(l.GetNodes())) + for _, n := range l.GetNodes() { + nodes = append(nodes, &models.V1Node{ + Txid: n.GetTxid(), + Tx: n.GetTx(), + ParentTxid: n.GetParentTxid(), + }) + } + levels = append(levels, &models.V1TreeLevel{ + Nodes: nodes, + }) + } + congestionTree := models.V1Tree{ + Levels: levels, + } + body := models.V1OnboardRequest{ + BoardingTx: req.GetBoardingTx(), + CongestionTree: &congestionTree, + UserPubkey: req.GetUserPubkey(), + } + _, err := a.svc.ArkServiceOnboard( + ark_service.NewArkServiceOnboardParams().WithBody(&body), + ) + if err != nil { + return nil, err + } + + return &arkv1.OnboardResponse{}, nil +} + +func (a *restClient) RegisterPayment( + ctx context.Context, req *arkv1.RegisterPaymentRequest, +) (*arkv1.RegisterPaymentResponse, error) { + inputs := make([]*models.V1Input, 0, len(req.GetInputs())) + for _, i := range req.GetInputs() { + inputs = append(inputs, &models.V1Input{ + Txid: i.GetTxid(), + Vout: int64(i.GetVout()), + }) + } + body := models.V1RegisterPaymentRequest{ + Inputs: inputs, + } + resp, err := a.svc.ArkServiceRegisterPayment( + ark_service.NewArkServiceRegisterPaymentParams().WithBody(&body), + ) + if err != nil { + return nil, err + } + + return &arkv1.RegisterPaymentResponse{ + Id: resp.Payload.ID, + }, nil +} + +func (a *restClient) ClaimPayment( + ctx context.Context, req *arkv1.ClaimPaymentRequest, +) (*arkv1.ClaimPaymentResponse, error) { + outputs := make([]*models.V1Output, 0, len(req.GetOutputs())) + for _, o := range req.GetOutputs() { + outputs = append(outputs, &models.V1Output{ + Address: o.GetAddress(), + Amount: strconv.Itoa(int(o.GetAmount())), + }) + } + body := models.V1ClaimPaymentRequest{ + ID: req.GetId(), + Outputs: outputs, + } + + _, err := a.svc.ArkServiceClaimPayment( + ark_service.NewArkServiceClaimPaymentParams().WithBody(&body), + ) + if err != nil { + return nil, err + } + + return &arkv1.ClaimPaymentResponse{}, nil +} + +func (a *restClient) Ping( + ctx context.Context, req *arkv1.PingRequest, +) (*arkv1.PingResponse, error) { + r := ark_service.NewArkServicePingParams() + r.SetPaymentID(req.GetPaymentId()) + resp, err := a.svc.ArkServicePing(r) + if err != nil { + return nil, err + } + + var event *arkv1.RoundFinalizationEvent + if resp.Payload.Event != nil && + resp.Payload.Event.ID != "" && + len(resp.Payload.Event.ForfeitTxs) > 0 && + len(resp.Payload.Event.CongestionTree.Levels) > 0 && + len(resp.Payload.Event.Connectors) > 0 && + resp.Payload.Event.PoolTx != "" { + levels := make([]*arkv1.TreeLevel, 0, len(resp.Payload.Event.CongestionTree.Levels)) + for _, l := range resp.Payload.Event.CongestionTree.Levels { + nodes := make([]*arkv1.Node, 0, len(l.Nodes)) + for _, n := range l.Nodes { + nodes = append(nodes, &arkv1.Node{ + Txid: n.Txid, + Tx: n.Tx, + ParentTxid: n.ParentTxid, + }) + } + levels = append(levels, &arkv1.TreeLevel{ + Nodes: nodes, + }) + } + + event = &arkv1.RoundFinalizationEvent{ + Id: resp.Payload.Event.ID, + PoolTx: resp.Payload.Event.PoolTx, + ForfeitTxs: resp.Payload.Event.ForfeitTxs, + CongestionTree: &arkv1.Tree{ + Levels: levels, + }, + Connectors: resp.Payload.Event.Connectors, + } + } + + return &arkv1.PingResponse{ + ForfeitTxs: resp.Payload.ForfeitTxs, + Event: event, + }, nil +} + +func (a *restClient) FinalizePayment( + ctx context.Context, req *arkv1.FinalizePaymentRequest, +) (*arkv1.FinalizePaymentResponse, error) { + body := models.V1FinalizePaymentRequest{ + SignedForfeitTxs: req.GetSignedForfeitTxs(), + } + _, err := a.svc.ArkServiceFinalizePayment( + ark_service.NewArkServiceFinalizePaymentParams().WithBody(&body), + ) + if err != nil { + return nil, err + } + + return &arkv1.FinalizePaymentResponse{}, nil +} + +func (a *restClient) GetRoundByID( + ctx context.Context, roundID string, +) (*arkv1.GetRoundByIdResponse, error) { + resp, err := a.svc.ArkServiceGetRoundByID( + ark_service.NewArkServiceGetRoundByIDParams().WithID(roundID), + ) + if err != nil { + return nil, err + } + + start, err := strconv.Atoi(resp.Payload.Round.Start) + if err != nil { + return nil, err + } + + end, err := strconv.Atoi(resp.Payload.Round.End) + if err != nil { + return nil, err + } + + levels := make([]*arkv1.TreeLevel, 0, len(resp.Payload.Round.CongestionTree.Levels)) + for _, l := range resp.Payload.Round.CongestionTree.Levels { + nodes := make([]*arkv1.Node, 0, len(l.Nodes)) + for _, n := range l.Nodes { + nodes = append(nodes, &arkv1.Node{ + Txid: n.Txid, + Tx: n.Tx, + ParentTxid: n.ParentTxid, + }) + } + levels = append(levels, &arkv1.TreeLevel{ + Nodes: nodes, + }) + } + + stage := stageStrToInt(*resp.Payload.Round.Stage) + + return &arkv1.GetRoundByIdResponse{ + Round: &arkv1.Round{ + Id: resp.Payload.Round.ID, + Start: int64(start), + End: int64(end), + PoolTx: resp.Payload.Round.PoolTx, + CongestionTree: &arkv1.Tree{ + Levels: levels, + }, + ForfeitTxs: resp.Payload.Round.ForfeitTxs, + Connectors: resp.Payload.Round.Connectors, + Stage: arkv1.RoundStage(stage), + }, + }, nil +} + +func newRestClient( + serviceURL string, +) (ark_service.ClientService, error) { + parsedURL, err := url.Parse(serviceURL) + if err != nil { + return nil, err + } + + schemes := []string{parsedURL.Scheme} + host := parsedURL.Host + basePath := parsedURL.Path + + if basePath == "" { + basePath = arkservice.DefaultBasePath + } + + cfg := &arkservice.TransportConfig{ + Host: host, + BasePath: basePath, + Schemes: schemes, + } + + transport := httptransport.New(cfg.Host, cfg.BasePath, cfg.Schemes) + svc := arkservice.New(transport, strfmt.Default) + return svc.ArkService, nil +} + +func stageStrToInt(stage models.V1RoundStage) int { + switch stage { + case models.V1RoundStageROUNDSTAGEUNSPECIFIED: + return 0 + case models.V1RoundStageROUNDSTAGEREGISTRATION: + return 1 + case models.V1RoundStageROUNDSTAGEFINALIZATION: + return 2 + case models.V1RoundStageROUNDSTAGEFINALIZED: + return 3 + case models.V1RoundStageROUNDSTAGEFAILED: + return 4 + } + + return -1 +} + +func toCongestionTree(treeFromProto *arkv1.Tree) (tree.CongestionTree, error) { + levels := make(tree.CongestionTree, 0, len(treeFromProto.Levels)) + + for _, level := range treeFromProto.Levels { + nodes := make([]tree.Node, 0, len(level.Nodes)) + + for _, node := range level.Nodes { + nodes = append(nodes, tree.Node{ + Txid: node.Txid, + Tx: node.Tx, + ParentTxid: node.ParentTxid, + Leaf: false, + }) + } + + levels = append(levels, nodes) + } + + for j, treeLvl := range levels { + for i, node := range treeLvl { + if len(levels.Children(node.Txid)) == 0 { + levels[j][i].Leaf = true + } + } + } + + return levels, nil +} diff --git a/pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_claim_payment_parameters.go b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_claim_payment_parameters.go similarity index 73% rename from pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_claim_payment_parameters.go rename to pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_claim_payment_parameters.go index 2c96ce6..744eb46 100644 --- a/pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_claim_payment_parameters.go +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_claim_payment_parameters.go @@ -13,57 +13,57 @@ import ( "github.com/go-openapi/errors" "github.com/go-openapi/runtime" cr "github.com/go-openapi/runtime/client" + "github.com/go-openapi/strfmt" - strfmt "github.com/go-openapi/strfmt" - - models "github.com/ark-network/ark-sdk/rest/service/models" + "github.com/ark-network/ark-sdk/client/rest/service/models" ) -// NewArkServiceClaimPaymentParams creates a new ArkServiceClaimPaymentParams object -// with the default values initialized. +// NewArkServiceClaimPaymentParams creates a new ArkServiceClaimPaymentParams object, +// with the default timeout for this client. +// +// Default values are not hydrated, since defaults are normally applied by the API server side. +// +// To enforce default values in parameter, use SetDefaults or WithDefaults. func NewArkServiceClaimPaymentParams() *ArkServiceClaimPaymentParams { - var () return &ArkServiceClaimPaymentParams{ - timeout: cr.DefaultTimeout, } } // NewArkServiceClaimPaymentParamsWithTimeout creates a new ArkServiceClaimPaymentParams object -// with the default values initialized, and the ability to set a timeout on a request +// with the ability to set a timeout on a request. func NewArkServiceClaimPaymentParamsWithTimeout(timeout time.Duration) *ArkServiceClaimPaymentParams { - var () return &ArkServiceClaimPaymentParams{ - timeout: timeout, } } // NewArkServiceClaimPaymentParamsWithContext creates a new ArkServiceClaimPaymentParams object -// with the default values initialized, and the ability to set a context for a request +// with the ability to set a context for a request. func NewArkServiceClaimPaymentParamsWithContext(ctx context.Context) *ArkServiceClaimPaymentParams { - var () return &ArkServiceClaimPaymentParams{ - Context: ctx, } } // NewArkServiceClaimPaymentParamsWithHTTPClient creates a new ArkServiceClaimPaymentParams object -// with the default values initialized, and the ability to set a custom HTTPClient for a request +// with the ability to set a custom HTTPClient for a request. func NewArkServiceClaimPaymentParamsWithHTTPClient(client *http.Client) *ArkServiceClaimPaymentParams { - var () return &ArkServiceClaimPaymentParams{ HTTPClient: client, } } -/*ArkServiceClaimPaymentParams contains all the parameters to send to the API endpoint -for the ark service claim payment operation typically these are written to a http.Request +/* +ArkServiceClaimPaymentParams contains all the parameters to send to the API endpoint + + for the ark service claim payment operation. + + Typically these are written to a http.Request. */ type ArkServiceClaimPaymentParams struct { - /*Body*/ + // Body. Body *models.V1ClaimPaymentRequest timeout time.Duration @@ -71,6 +71,21 @@ type ArkServiceClaimPaymentParams struct { HTTPClient *http.Client } +// WithDefaults hydrates default values in the ark service claim payment params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ArkServiceClaimPaymentParams) WithDefaults() *ArkServiceClaimPaymentParams { + o.SetDefaults() + return o +} + +// SetDefaults hydrates default values in the ark service claim payment params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ArkServiceClaimPaymentParams) SetDefaults() { + // no default values defined for this parameter +} + // WithTimeout adds the timeout to the ark service claim payment params func (o *ArkServiceClaimPaymentParams) WithTimeout(timeout time.Duration) *ArkServiceClaimPaymentParams { o.SetTimeout(timeout) @@ -122,7 +137,6 @@ func (o *ArkServiceClaimPaymentParams) WriteToRequest(r runtime.ClientRequest, r return err } var res []error - if o.Body != nil { if err := r.SetBodyParam(o.Body); err != nil { return err diff --git a/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_claim_payment_responses.go b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_claim_payment_responses.go new file mode 100644 index 0000000..5a73ec6 --- /dev/null +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_claim_payment_responses.go @@ -0,0 +1,185 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package ark_service + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "encoding/json" + "fmt" + "io" + + "github.com/go-openapi/runtime" + "github.com/go-openapi/strfmt" + + "github.com/ark-network/ark-sdk/client/rest/service/models" +) + +// ArkServiceClaimPaymentReader is a Reader for the ArkServiceClaimPayment structure. +type ArkServiceClaimPaymentReader struct { + formats strfmt.Registry +} + +// ReadResponse reads a server response into the received o. +func (o *ArkServiceClaimPaymentReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) { + switch response.Code() { + case 200: + result := NewArkServiceClaimPaymentOK() + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + return result, nil + default: + result := NewArkServiceClaimPaymentDefault(response.Code()) + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + if response.Code()/100 == 2 { + return result, nil + } + return nil, result + } +} + +// NewArkServiceClaimPaymentOK creates a ArkServiceClaimPaymentOK with default headers values +func NewArkServiceClaimPaymentOK() *ArkServiceClaimPaymentOK { + return &ArkServiceClaimPaymentOK{} +} + +/* +ArkServiceClaimPaymentOK describes a response with status code 200, with default header values. + +A successful response. +*/ +type ArkServiceClaimPaymentOK struct { + Payload models.V1ClaimPaymentResponse +} + +// IsSuccess returns true when this ark service claim payment o k response has a 2xx status code +func (o *ArkServiceClaimPaymentOK) IsSuccess() bool { + return true +} + +// IsRedirect returns true when this ark service claim payment o k response has a 3xx status code +func (o *ArkServiceClaimPaymentOK) IsRedirect() bool { + return false +} + +// IsClientError returns true when this ark service claim payment o k response has a 4xx status code +func (o *ArkServiceClaimPaymentOK) IsClientError() bool { + return false +} + +// IsServerError returns true when this ark service claim payment o k response has a 5xx status code +func (o *ArkServiceClaimPaymentOK) IsServerError() bool { + return false +} + +// IsCode returns true when this ark service claim payment o k response a status code equal to that given +func (o *ArkServiceClaimPaymentOK) IsCode(code int) bool { + return code == 200 +} + +// Code gets the status code for the ark service claim payment o k response +func (o *ArkServiceClaimPaymentOK) Code() int { + return 200 +} + +func (o *ArkServiceClaimPaymentOK) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[POST /v1/payment/claim][%d] arkServiceClaimPaymentOK %s", 200, payload) +} + +func (o *ArkServiceClaimPaymentOK) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[POST /v1/payment/claim][%d] arkServiceClaimPaymentOK %s", 200, payload) +} + +func (o *ArkServiceClaimPaymentOK) GetPayload() models.V1ClaimPaymentResponse { + return o.Payload +} + +func (o *ArkServiceClaimPaymentOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + // response payload + if err := consumer.Consume(response.Body(), &o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +// NewArkServiceClaimPaymentDefault creates a ArkServiceClaimPaymentDefault with default headers values +func NewArkServiceClaimPaymentDefault(code int) *ArkServiceClaimPaymentDefault { + return &ArkServiceClaimPaymentDefault{ + _statusCode: code, + } +} + +/* +ArkServiceClaimPaymentDefault describes a response with status code -1, with default header values. + +An unexpected error response. +*/ +type ArkServiceClaimPaymentDefault struct { + _statusCode int + + Payload *models.RPCStatus +} + +// IsSuccess returns true when this ark service claim payment default response has a 2xx status code +func (o *ArkServiceClaimPaymentDefault) IsSuccess() bool { + return o._statusCode/100 == 2 +} + +// IsRedirect returns true when this ark service claim payment default response has a 3xx status code +func (o *ArkServiceClaimPaymentDefault) IsRedirect() bool { + return o._statusCode/100 == 3 +} + +// IsClientError returns true when this ark service claim payment default response has a 4xx status code +func (o *ArkServiceClaimPaymentDefault) IsClientError() bool { + return o._statusCode/100 == 4 +} + +// IsServerError returns true when this ark service claim payment default response has a 5xx status code +func (o *ArkServiceClaimPaymentDefault) IsServerError() bool { + return o._statusCode/100 == 5 +} + +// IsCode returns true when this ark service claim payment default response a status code equal to that given +func (o *ArkServiceClaimPaymentDefault) IsCode(code int) bool { + return o._statusCode == code +} + +// Code gets the status code for the ark service claim payment default response +func (o *ArkServiceClaimPaymentDefault) Code() int { + return o._statusCode +} + +func (o *ArkServiceClaimPaymentDefault) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[POST /v1/payment/claim][%d] ArkService_ClaimPayment default %s", o._statusCode, payload) +} + +func (o *ArkServiceClaimPaymentDefault) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[POST /v1/payment/claim][%d] ArkService_ClaimPayment default %s", o._statusCode, payload) +} + +func (o *ArkServiceClaimPaymentDefault) GetPayload() *models.RPCStatus { + return o.Payload +} + +func (o *ArkServiceClaimPaymentDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(models.RPCStatus) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} diff --git a/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_client.go b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_client.go new file mode 100644 index 0000000..054f0c1 --- /dev/null +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_client.go @@ -0,0 +1,492 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package ark_service + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "github.com/go-openapi/runtime" + httptransport "github.com/go-openapi/runtime/client" + "github.com/go-openapi/strfmt" +) + +// New creates a new ark service API client. +func New(transport runtime.ClientTransport, formats strfmt.Registry) ClientService { + return &Client{transport: transport, formats: formats} +} + +// New creates a new ark service API client with basic auth credentials. +// It takes the following parameters: +// - host: http host (github.com). +// - basePath: any base path for the API client ("/v1", "/v3"). +// - scheme: http scheme ("http", "https"). +// - user: user for basic authentication header. +// - password: password for basic authentication header. +func NewClientWithBasicAuth(host, basePath, scheme, user, password string) ClientService { + transport := httptransport.New(host, basePath, []string{scheme}) + transport.DefaultAuthentication = httptransport.BasicAuth(user, password) + return &Client{transport: transport, formats: strfmt.Default} +} + +// New creates a new ark service API client with a bearer token for authentication. +// It takes the following parameters: +// - host: http host (github.com). +// - basePath: any base path for the API client ("/v1", "/v3"). +// - scheme: http scheme ("http", "https"). +// - bearerToken: bearer token for Bearer authentication header. +func NewClientWithBearerToken(host, basePath, scheme, bearerToken string) ClientService { + transport := httptransport.New(host, basePath, []string{scheme}) + transport.DefaultAuthentication = httptransport.BearerToken(bearerToken) + return &Client{transport: transport, formats: strfmt.Default} +} + +/* +Client for ark service API +*/ +type Client struct { + transport runtime.ClientTransport + formats strfmt.Registry +} + +// ClientOption may be used to customize the behavior of Client methods. +type ClientOption func(*runtime.ClientOperation) + +// ClientService is the interface for Client methods +type ClientService interface { + ArkServiceClaimPayment(params *ArkServiceClaimPaymentParams, opts ...ClientOption) (*ArkServiceClaimPaymentOK, error) + + ArkServiceFinalizePayment(params *ArkServiceFinalizePaymentParams, opts ...ClientOption) (*ArkServiceFinalizePaymentOK, error) + + ArkServiceGetEventStream(params *ArkServiceGetEventStreamParams, opts ...ClientOption) (*ArkServiceGetEventStreamOK, error) + + ArkServiceGetInfo(params *ArkServiceGetInfoParams, opts ...ClientOption) (*ArkServiceGetInfoOK, error) + + ArkServiceGetRound(params *ArkServiceGetRoundParams, opts ...ClientOption) (*ArkServiceGetRoundOK, error) + + ArkServiceGetRoundByID(params *ArkServiceGetRoundByIDParams, opts ...ClientOption) (*ArkServiceGetRoundByIDOK, error) + + ArkServiceListVtxos(params *ArkServiceListVtxosParams, opts ...ClientOption) (*ArkServiceListVtxosOK, error) + + ArkServiceOnboard(params *ArkServiceOnboardParams, opts ...ClientOption) (*ArkServiceOnboardOK, error) + + ArkServicePing(params *ArkServicePingParams, opts ...ClientOption) (*ArkServicePingOK, error) + + ArkServiceRegisterPayment(params *ArkServiceRegisterPaymentParams, opts ...ClientOption) (*ArkServiceRegisterPaymentOK, error) + + ArkServiceTrustedOnboarding(params *ArkServiceTrustedOnboardingParams, opts ...ClientOption) (*ArkServiceTrustedOnboardingOK, error) + + SetTransport(transport runtime.ClientTransport) +} + +/* +ArkServiceClaimPayment ark service claim payment API +*/ +func (a *Client) ArkServiceClaimPayment(params *ArkServiceClaimPaymentParams, opts ...ClientOption) (*ArkServiceClaimPaymentOK, error) { + // TODO: Validate the params before sending + if params == nil { + params = NewArkServiceClaimPaymentParams() + } + op := &runtime.ClientOperation{ + ID: "ArkService_ClaimPayment", + Method: "POST", + PathPattern: "/v1/payment/claim", + ProducesMediaTypes: []string{"application/json"}, + ConsumesMediaTypes: []string{"application/json"}, + Schemes: []string{"http"}, + Params: params, + Reader: &ArkServiceClaimPaymentReader{formats: a.formats}, + Context: params.Context, + Client: params.HTTPClient, + } + for _, opt := range opts { + opt(op) + } + + result, err := a.transport.Submit(op) + if err != nil { + return nil, err + } + success, ok := result.(*ArkServiceClaimPaymentOK) + if ok { + return success, nil + } + // unexpected success response + unexpectedSuccess := result.(*ArkServiceClaimPaymentDefault) + return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) +} + +/* +ArkServiceFinalizePayment ark service finalize payment API +*/ +func (a *Client) ArkServiceFinalizePayment(params *ArkServiceFinalizePaymentParams, opts ...ClientOption) (*ArkServiceFinalizePaymentOK, error) { + // TODO: Validate the params before sending + if params == nil { + params = NewArkServiceFinalizePaymentParams() + } + op := &runtime.ClientOperation{ + ID: "ArkService_FinalizePayment", + Method: "POST", + PathPattern: "/v1/payment/finalize", + ProducesMediaTypes: []string{"application/json"}, + ConsumesMediaTypes: []string{"application/json"}, + Schemes: []string{"http"}, + Params: params, + Reader: &ArkServiceFinalizePaymentReader{formats: a.formats}, + Context: params.Context, + Client: params.HTTPClient, + } + for _, opt := range opts { + opt(op) + } + + result, err := a.transport.Submit(op) + if err != nil { + return nil, err + } + success, ok := result.(*ArkServiceFinalizePaymentOK) + if ok { + return success, nil + } + // unexpected success response + unexpectedSuccess := result.(*ArkServiceFinalizePaymentDefault) + return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) +} + +/* +ArkServiceGetEventStream ark service get event stream API +*/ +func (a *Client) ArkServiceGetEventStream(params *ArkServiceGetEventStreamParams, opts ...ClientOption) (*ArkServiceGetEventStreamOK, error) { + // TODO: Validate the params before sending + if params == nil { + params = NewArkServiceGetEventStreamParams() + } + op := &runtime.ClientOperation{ + ID: "ArkService_GetEventStream", + Method: "GET", + PathPattern: "/v1/events", + ProducesMediaTypes: []string{"application/json"}, + ConsumesMediaTypes: []string{"application/json"}, + Schemes: []string{"http"}, + Params: params, + Reader: &ArkServiceGetEventStreamReader{formats: a.formats}, + Context: params.Context, + Client: params.HTTPClient, + } + for _, opt := range opts { + opt(op) + } + + result, err := a.transport.Submit(op) + if err != nil { + return nil, err + } + success, ok := result.(*ArkServiceGetEventStreamOK) + if ok { + return success, nil + } + // unexpected success response + unexpectedSuccess := result.(*ArkServiceGetEventStreamDefault) + return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) +} + +/* +ArkServiceGetInfo ark service get info API +*/ +func (a *Client) ArkServiceGetInfo(params *ArkServiceGetInfoParams, opts ...ClientOption) (*ArkServiceGetInfoOK, error) { + // TODO: Validate the params before sending + if params == nil { + params = NewArkServiceGetInfoParams() + } + op := &runtime.ClientOperation{ + ID: "ArkService_GetInfo", + Method: "GET", + PathPattern: "/v1/info", + ProducesMediaTypes: []string{"application/json"}, + ConsumesMediaTypes: []string{"application/json"}, + Schemes: []string{"http"}, + Params: params, + Reader: &ArkServiceGetInfoReader{formats: a.formats}, + Context: params.Context, + Client: params.HTTPClient, + } + for _, opt := range opts { + opt(op) + } + + result, err := a.transport.Submit(op) + if err != nil { + return nil, err + } + success, ok := result.(*ArkServiceGetInfoOK) + if ok { + return success, nil + } + // unexpected success response + unexpectedSuccess := result.(*ArkServiceGetInfoDefault) + return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) +} + +/* +ArkServiceGetRound ts o d o b t c sign tree rpc +*/ +func (a *Client) ArkServiceGetRound(params *ArkServiceGetRoundParams, opts ...ClientOption) (*ArkServiceGetRoundOK, error) { + // TODO: Validate the params before sending + if params == nil { + params = NewArkServiceGetRoundParams() + } + op := &runtime.ClientOperation{ + ID: "ArkService_GetRound", + Method: "GET", + PathPattern: "/v1/round/{txid}", + ProducesMediaTypes: []string{"application/json"}, + ConsumesMediaTypes: []string{"application/json"}, + Schemes: []string{"http"}, + Params: params, + Reader: &ArkServiceGetRoundReader{formats: a.formats}, + Context: params.Context, + Client: params.HTTPClient, + } + for _, opt := range opts { + opt(op) + } + + result, err := a.transport.Submit(op) + if err != nil { + return nil, err + } + success, ok := result.(*ArkServiceGetRoundOK) + if ok { + return success, nil + } + // unexpected success response + unexpectedSuccess := result.(*ArkServiceGetRoundDefault) + return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) +} + +/* +ArkServiceGetRoundByID ark service get round by Id API +*/ +func (a *Client) ArkServiceGetRoundByID(params *ArkServiceGetRoundByIDParams, opts ...ClientOption) (*ArkServiceGetRoundByIDOK, error) { + // TODO: Validate the params before sending + if params == nil { + params = NewArkServiceGetRoundByIDParams() + } + op := &runtime.ClientOperation{ + ID: "ArkService_GetRoundById", + Method: "GET", + PathPattern: "/v1/round/id/{id}", + ProducesMediaTypes: []string{"application/json"}, + ConsumesMediaTypes: []string{"application/json"}, + Schemes: []string{"http"}, + Params: params, + Reader: &ArkServiceGetRoundByIDReader{formats: a.formats}, + Context: params.Context, + Client: params.HTTPClient, + } + for _, opt := range opts { + opt(op) + } + + result, err := a.transport.Submit(op) + if err != nil { + return nil, err + } + success, ok := result.(*ArkServiceGetRoundByIDOK) + if ok { + return success, nil + } + // unexpected success response + unexpectedSuccess := result.(*ArkServiceGetRoundByIDDefault) + return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) +} + +/* +ArkServiceListVtxos ark service list vtxos API +*/ +func (a *Client) ArkServiceListVtxos(params *ArkServiceListVtxosParams, opts ...ClientOption) (*ArkServiceListVtxosOK, error) { + // TODO: Validate the params before sending + if params == nil { + params = NewArkServiceListVtxosParams() + } + op := &runtime.ClientOperation{ + ID: "ArkService_ListVtxos", + Method: "GET", + PathPattern: "/v1/vtxos/{address}", + ProducesMediaTypes: []string{"application/json"}, + ConsumesMediaTypes: []string{"application/json"}, + Schemes: []string{"http"}, + Params: params, + Reader: &ArkServiceListVtxosReader{formats: a.formats}, + Context: params.Context, + Client: params.HTTPClient, + } + for _, opt := range opts { + opt(op) + } + + result, err := a.transport.Submit(op) + if err != nil { + return nil, err + } + success, ok := result.(*ArkServiceListVtxosOK) + if ok { + return success, nil + } + // unexpected success response + unexpectedSuccess := result.(*ArkServiceListVtxosDefault) + return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) +} + +/* +ArkServiceOnboard ark service onboard API +*/ +func (a *Client) ArkServiceOnboard(params *ArkServiceOnboardParams, opts ...ClientOption) (*ArkServiceOnboardOK, error) { + // TODO: Validate the params before sending + if params == nil { + params = NewArkServiceOnboardParams() + } + op := &runtime.ClientOperation{ + ID: "ArkService_Onboard", + Method: "POST", + PathPattern: "/v1/onboard", + ProducesMediaTypes: []string{"application/json"}, + ConsumesMediaTypes: []string{"application/json"}, + Schemes: []string{"http"}, + Params: params, + Reader: &ArkServiceOnboardReader{formats: a.formats}, + Context: params.Context, + Client: params.HTTPClient, + } + for _, opt := range opts { + opt(op) + } + + result, err := a.transport.Submit(op) + if err != nil { + return nil, err + } + success, ok := result.(*ArkServiceOnboardOK) + if ok { + return success, nil + } + // unexpected success response + unexpectedSuccess := result.(*ArkServiceOnboardDefault) + return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) +} + +/* +ArkServicePing ark service ping API +*/ +func (a *Client) ArkServicePing(params *ArkServicePingParams, opts ...ClientOption) (*ArkServicePingOK, error) { + // TODO: Validate the params before sending + if params == nil { + params = NewArkServicePingParams() + } + op := &runtime.ClientOperation{ + ID: "ArkService_Ping", + Method: "GET", + PathPattern: "/v1/ping/{paymentId}", + ProducesMediaTypes: []string{"application/json"}, + ConsumesMediaTypes: []string{"application/json"}, + Schemes: []string{"http"}, + Params: params, + Reader: &ArkServicePingReader{formats: a.formats}, + Context: params.Context, + Client: params.HTTPClient, + } + for _, opt := range opts { + opt(op) + } + + result, err := a.transport.Submit(op) + if err != nil { + return nil, err + } + success, ok := result.(*ArkServicePingOK) + if ok { + return success, nil + } + // unexpected success response + unexpectedSuccess := result.(*ArkServicePingDefault) + return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) +} + +/* +ArkServiceRegisterPayment ark service register payment API +*/ +func (a *Client) ArkServiceRegisterPayment(params *ArkServiceRegisterPaymentParams, opts ...ClientOption) (*ArkServiceRegisterPaymentOK, error) { + // TODO: Validate the params before sending + if params == nil { + params = NewArkServiceRegisterPaymentParams() + } + op := &runtime.ClientOperation{ + ID: "ArkService_RegisterPayment", + Method: "POST", + PathPattern: "/v1/payment/register", + ProducesMediaTypes: []string{"application/json"}, + ConsumesMediaTypes: []string{"application/json"}, + Schemes: []string{"http"}, + Params: params, + Reader: &ArkServiceRegisterPaymentReader{formats: a.formats}, + Context: params.Context, + Client: params.HTTPClient, + } + for _, opt := range opts { + opt(op) + } + + result, err := a.transport.Submit(op) + if err != nil { + return nil, err + } + success, ok := result.(*ArkServiceRegisterPaymentOK) + if ok { + return success, nil + } + // unexpected success response + unexpectedSuccess := result.(*ArkServiceRegisterPaymentDefault) + return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) +} + +/* +ArkServiceTrustedOnboarding ark service trusted onboarding API +*/ +func (a *Client) ArkServiceTrustedOnboarding(params *ArkServiceTrustedOnboardingParams, opts ...ClientOption) (*ArkServiceTrustedOnboardingOK, error) { + // TODO: Validate the params before sending + if params == nil { + params = NewArkServiceTrustedOnboardingParams() + } + op := &runtime.ClientOperation{ + ID: "ArkService_TrustedOnboarding", + Method: "POST", + PathPattern: "/v1/onboard/address", + ProducesMediaTypes: []string{"application/json"}, + ConsumesMediaTypes: []string{"application/json"}, + Schemes: []string{"http"}, + Params: params, + Reader: &ArkServiceTrustedOnboardingReader{formats: a.formats}, + Context: params.Context, + Client: params.HTTPClient, + } + for _, opt := range opts { + opt(op) + } + + result, err := a.transport.Submit(op) + if err != nil { + return nil, err + } + success, ok := result.(*ArkServiceTrustedOnboardingOK) + if ok { + return success, nil + } + // unexpected success response + unexpectedSuccess := result.(*ArkServiceTrustedOnboardingDefault) + return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) +} + +// SetTransport changes the transport on the client +func (a *Client) SetTransport(transport runtime.ClientTransport) { + a.transport = transport +} diff --git a/pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_finalize_payment_parameters.go b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_finalize_payment_parameters.go similarity index 73% rename from pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_finalize_payment_parameters.go rename to pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_finalize_payment_parameters.go index 4a6c340..01aad51 100644 --- a/pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_finalize_payment_parameters.go +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_finalize_payment_parameters.go @@ -13,57 +13,57 @@ import ( "github.com/go-openapi/errors" "github.com/go-openapi/runtime" cr "github.com/go-openapi/runtime/client" + "github.com/go-openapi/strfmt" - strfmt "github.com/go-openapi/strfmt" - - models "github.com/ark-network/ark-sdk/rest/service/models" + "github.com/ark-network/ark-sdk/client/rest/service/models" ) -// NewArkServiceFinalizePaymentParams creates a new ArkServiceFinalizePaymentParams object -// with the default values initialized. +// NewArkServiceFinalizePaymentParams creates a new ArkServiceFinalizePaymentParams object, +// with the default timeout for this client. +// +// Default values are not hydrated, since defaults are normally applied by the API server side. +// +// To enforce default values in parameter, use SetDefaults or WithDefaults. func NewArkServiceFinalizePaymentParams() *ArkServiceFinalizePaymentParams { - var () return &ArkServiceFinalizePaymentParams{ - timeout: cr.DefaultTimeout, } } // NewArkServiceFinalizePaymentParamsWithTimeout creates a new ArkServiceFinalizePaymentParams object -// with the default values initialized, and the ability to set a timeout on a request +// with the ability to set a timeout on a request. func NewArkServiceFinalizePaymentParamsWithTimeout(timeout time.Duration) *ArkServiceFinalizePaymentParams { - var () return &ArkServiceFinalizePaymentParams{ - timeout: timeout, } } // NewArkServiceFinalizePaymentParamsWithContext creates a new ArkServiceFinalizePaymentParams object -// with the default values initialized, and the ability to set a context for a request +// with the ability to set a context for a request. func NewArkServiceFinalizePaymentParamsWithContext(ctx context.Context) *ArkServiceFinalizePaymentParams { - var () return &ArkServiceFinalizePaymentParams{ - Context: ctx, } } // NewArkServiceFinalizePaymentParamsWithHTTPClient creates a new ArkServiceFinalizePaymentParams object -// with the default values initialized, and the ability to set a custom HTTPClient for a request +// with the ability to set a custom HTTPClient for a request. func NewArkServiceFinalizePaymentParamsWithHTTPClient(client *http.Client) *ArkServiceFinalizePaymentParams { - var () return &ArkServiceFinalizePaymentParams{ HTTPClient: client, } } -/*ArkServiceFinalizePaymentParams contains all the parameters to send to the API endpoint -for the ark service finalize payment operation typically these are written to a http.Request +/* +ArkServiceFinalizePaymentParams contains all the parameters to send to the API endpoint + + for the ark service finalize payment operation. + + Typically these are written to a http.Request. */ type ArkServiceFinalizePaymentParams struct { - /*Body*/ + // Body. Body *models.V1FinalizePaymentRequest timeout time.Duration @@ -71,6 +71,21 @@ type ArkServiceFinalizePaymentParams struct { HTTPClient *http.Client } +// WithDefaults hydrates default values in the ark service finalize payment params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ArkServiceFinalizePaymentParams) WithDefaults() *ArkServiceFinalizePaymentParams { + o.SetDefaults() + return o +} + +// SetDefaults hydrates default values in the ark service finalize payment params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ArkServiceFinalizePaymentParams) SetDefaults() { + // no default values defined for this parameter +} + // WithTimeout adds the timeout to the ark service finalize payment params func (o *ArkServiceFinalizePaymentParams) WithTimeout(timeout time.Duration) *ArkServiceFinalizePaymentParams { o.SetTimeout(timeout) @@ -122,7 +137,6 @@ func (o *ArkServiceFinalizePaymentParams) WriteToRequest(r runtime.ClientRequest return err } var res []error - if o.Body != nil { if err := r.SetBodyParam(o.Body); err != nil { return err diff --git a/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_finalize_payment_responses.go b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_finalize_payment_responses.go new file mode 100644 index 0000000..46d7ca8 --- /dev/null +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_finalize_payment_responses.go @@ -0,0 +1,185 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package ark_service + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "encoding/json" + "fmt" + "io" + + "github.com/go-openapi/runtime" + "github.com/go-openapi/strfmt" + + "github.com/ark-network/ark-sdk/client/rest/service/models" +) + +// ArkServiceFinalizePaymentReader is a Reader for the ArkServiceFinalizePayment structure. +type ArkServiceFinalizePaymentReader struct { + formats strfmt.Registry +} + +// ReadResponse reads a server response into the received o. +func (o *ArkServiceFinalizePaymentReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) { + switch response.Code() { + case 200: + result := NewArkServiceFinalizePaymentOK() + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + return result, nil + default: + result := NewArkServiceFinalizePaymentDefault(response.Code()) + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + if response.Code()/100 == 2 { + return result, nil + } + return nil, result + } +} + +// NewArkServiceFinalizePaymentOK creates a ArkServiceFinalizePaymentOK with default headers values +func NewArkServiceFinalizePaymentOK() *ArkServiceFinalizePaymentOK { + return &ArkServiceFinalizePaymentOK{} +} + +/* +ArkServiceFinalizePaymentOK describes a response with status code 200, with default header values. + +A successful response. +*/ +type ArkServiceFinalizePaymentOK struct { + Payload models.V1FinalizePaymentResponse +} + +// IsSuccess returns true when this ark service finalize payment o k response has a 2xx status code +func (o *ArkServiceFinalizePaymentOK) IsSuccess() bool { + return true +} + +// IsRedirect returns true when this ark service finalize payment o k response has a 3xx status code +func (o *ArkServiceFinalizePaymentOK) IsRedirect() bool { + return false +} + +// IsClientError returns true when this ark service finalize payment o k response has a 4xx status code +func (o *ArkServiceFinalizePaymentOK) IsClientError() bool { + return false +} + +// IsServerError returns true when this ark service finalize payment o k response has a 5xx status code +func (o *ArkServiceFinalizePaymentOK) IsServerError() bool { + return false +} + +// IsCode returns true when this ark service finalize payment o k response a status code equal to that given +func (o *ArkServiceFinalizePaymentOK) IsCode(code int) bool { + return code == 200 +} + +// Code gets the status code for the ark service finalize payment o k response +func (o *ArkServiceFinalizePaymentOK) Code() int { + return 200 +} + +func (o *ArkServiceFinalizePaymentOK) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[POST /v1/payment/finalize][%d] arkServiceFinalizePaymentOK %s", 200, payload) +} + +func (o *ArkServiceFinalizePaymentOK) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[POST /v1/payment/finalize][%d] arkServiceFinalizePaymentOK %s", 200, payload) +} + +func (o *ArkServiceFinalizePaymentOK) GetPayload() models.V1FinalizePaymentResponse { + return o.Payload +} + +func (o *ArkServiceFinalizePaymentOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + // response payload + if err := consumer.Consume(response.Body(), &o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +// NewArkServiceFinalizePaymentDefault creates a ArkServiceFinalizePaymentDefault with default headers values +func NewArkServiceFinalizePaymentDefault(code int) *ArkServiceFinalizePaymentDefault { + return &ArkServiceFinalizePaymentDefault{ + _statusCode: code, + } +} + +/* +ArkServiceFinalizePaymentDefault describes a response with status code -1, with default header values. + +An unexpected error response. +*/ +type ArkServiceFinalizePaymentDefault struct { + _statusCode int + + Payload *models.RPCStatus +} + +// IsSuccess returns true when this ark service finalize payment default response has a 2xx status code +func (o *ArkServiceFinalizePaymentDefault) IsSuccess() bool { + return o._statusCode/100 == 2 +} + +// IsRedirect returns true when this ark service finalize payment default response has a 3xx status code +func (o *ArkServiceFinalizePaymentDefault) IsRedirect() bool { + return o._statusCode/100 == 3 +} + +// IsClientError returns true when this ark service finalize payment default response has a 4xx status code +func (o *ArkServiceFinalizePaymentDefault) IsClientError() bool { + return o._statusCode/100 == 4 +} + +// IsServerError returns true when this ark service finalize payment default response has a 5xx status code +func (o *ArkServiceFinalizePaymentDefault) IsServerError() bool { + return o._statusCode/100 == 5 +} + +// IsCode returns true when this ark service finalize payment default response a status code equal to that given +func (o *ArkServiceFinalizePaymentDefault) IsCode(code int) bool { + return o._statusCode == code +} + +// Code gets the status code for the ark service finalize payment default response +func (o *ArkServiceFinalizePaymentDefault) Code() int { + return o._statusCode +} + +func (o *ArkServiceFinalizePaymentDefault) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[POST /v1/payment/finalize][%d] ArkService_FinalizePayment default %s", o._statusCode, payload) +} + +func (o *ArkServiceFinalizePaymentDefault) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[POST /v1/payment/finalize][%d] ArkService_FinalizePayment default %s", o._statusCode, payload) +} + +func (o *ArkServiceFinalizePaymentDefault) GetPayload() *models.RPCStatus { + return o.Payload +} + +func (o *ArkServiceFinalizePaymentDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(models.RPCStatus) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} diff --git a/pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_get_event_stream_parameters.go b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_event_stream_parameters.go similarity index 71% rename from pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_get_event_stream_parameters.go rename to pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_event_stream_parameters.go index 7977bc5..52a037d 100644 --- a/pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_get_event_stream_parameters.go +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_event_stream_parameters.go @@ -13,51 +13,51 @@ import ( "github.com/go-openapi/errors" "github.com/go-openapi/runtime" cr "github.com/go-openapi/runtime/client" - - strfmt "github.com/go-openapi/strfmt" + "github.com/go-openapi/strfmt" ) -// NewArkServiceGetEventStreamParams creates a new ArkServiceGetEventStreamParams object -// with the default values initialized. +// NewArkServiceGetEventStreamParams creates a new ArkServiceGetEventStreamParams object, +// with the default timeout for this client. +// +// Default values are not hydrated, since defaults are normally applied by the API server side. +// +// To enforce default values in parameter, use SetDefaults or WithDefaults. func NewArkServiceGetEventStreamParams() *ArkServiceGetEventStreamParams { - return &ArkServiceGetEventStreamParams{ - timeout: cr.DefaultTimeout, } } // NewArkServiceGetEventStreamParamsWithTimeout creates a new ArkServiceGetEventStreamParams object -// with the default values initialized, and the ability to set a timeout on a request +// with the ability to set a timeout on a request. func NewArkServiceGetEventStreamParamsWithTimeout(timeout time.Duration) *ArkServiceGetEventStreamParams { - return &ArkServiceGetEventStreamParams{ - timeout: timeout, } } // NewArkServiceGetEventStreamParamsWithContext creates a new ArkServiceGetEventStreamParams object -// with the default values initialized, and the ability to set a context for a request +// with the ability to set a context for a request. func NewArkServiceGetEventStreamParamsWithContext(ctx context.Context) *ArkServiceGetEventStreamParams { - return &ArkServiceGetEventStreamParams{ - Context: ctx, } } // NewArkServiceGetEventStreamParamsWithHTTPClient creates a new ArkServiceGetEventStreamParams object -// with the default values initialized, and the ability to set a custom HTTPClient for a request +// with the ability to set a custom HTTPClient for a request. func NewArkServiceGetEventStreamParamsWithHTTPClient(client *http.Client) *ArkServiceGetEventStreamParams { - return &ArkServiceGetEventStreamParams{ HTTPClient: client, } } -/*ArkServiceGetEventStreamParams contains all the parameters to send to the API endpoint -for the ark service get event stream operation typically these are written to a http.Request +/* +ArkServiceGetEventStreamParams contains all the parameters to send to the API endpoint + + for the ark service get event stream operation. + + Typically these are written to a http.Request. */ type ArkServiceGetEventStreamParams struct { timeout time.Duration @@ -65,6 +65,21 @@ type ArkServiceGetEventStreamParams struct { HTTPClient *http.Client } +// WithDefaults hydrates default values in the ark service get event stream params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ArkServiceGetEventStreamParams) WithDefaults() *ArkServiceGetEventStreamParams { + o.SetDefaults() + return o +} + +// SetDefaults hydrates default values in the ark service get event stream params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ArkServiceGetEventStreamParams) SetDefaults() { + // no default values defined for this parameter +} + // WithTimeout adds the timeout to the ark service get event stream params func (o *ArkServiceGetEventStreamParams) WithTimeout(timeout time.Duration) *ArkServiceGetEventStreamParams { o.SetTimeout(timeout) diff --git a/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_event_stream_responses.go b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_event_stream_responses.go new file mode 100644 index 0000000..f835c48 --- /dev/null +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_event_stream_responses.go @@ -0,0 +1,337 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package ark_service + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + "encoding/json" + "fmt" + "io" + + "github.com/go-openapi/errors" + "github.com/go-openapi/runtime" + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" + + "github.com/ark-network/ark-sdk/client/rest/service/models" +) + +// ArkServiceGetEventStreamReader is a Reader for the ArkServiceGetEventStream structure. +type ArkServiceGetEventStreamReader struct { + formats strfmt.Registry +} + +// ReadResponse reads a server response into the received o. +func (o *ArkServiceGetEventStreamReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) { + switch response.Code() { + case 200: + result := NewArkServiceGetEventStreamOK() + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + return result, nil + default: + result := NewArkServiceGetEventStreamDefault(response.Code()) + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + if response.Code()/100 == 2 { + return result, nil + } + return nil, result + } +} + +// NewArkServiceGetEventStreamOK creates a ArkServiceGetEventStreamOK with default headers values +func NewArkServiceGetEventStreamOK() *ArkServiceGetEventStreamOK { + return &ArkServiceGetEventStreamOK{} +} + +/* +ArkServiceGetEventStreamOK describes a response with status code 200, with default header values. + +A successful response.(streaming responses) +*/ +type ArkServiceGetEventStreamOK struct { + Payload *ArkServiceGetEventStreamOKBody +} + +// IsSuccess returns true when this ark service get event stream o k response has a 2xx status code +func (o *ArkServiceGetEventStreamOK) IsSuccess() bool { + return true +} + +// IsRedirect returns true when this ark service get event stream o k response has a 3xx status code +func (o *ArkServiceGetEventStreamOK) IsRedirect() bool { + return false +} + +// IsClientError returns true when this ark service get event stream o k response has a 4xx status code +func (o *ArkServiceGetEventStreamOK) IsClientError() bool { + return false +} + +// IsServerError returns true when this ark service get event stream o k response has a 5xx status code +func (o *ArkServiceGetEventStreamOK) IsServerError() bool { + return false +} + +// IsCode returns true when this ark service get event stream o k response a status code equal to that given +func (o *ArkServiceGetEventStreamOK) IsCode(code int) bool { + return code == 200 +} + +// Code gets the status code for the ark service get event stream o k response +func (o *ArkServiceGetEventStreamOK) Code() int { + return 200 +} + +func (o *ArkServiceGetEventStreamOK) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/events][%d] arkServiceGetEventStreamOK %s", 200, payload) +} + +func (o *ArkServiceGetEventStreamOK) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/events][%d] arkServiceGetEventStreamOK %s", 200, payload) +} + +func (o *ArkServiceGetEventStreamOK) GetPayload() *ArkServiceGetEventStreamOKBody { + return o.Payload +} + +func (o *ArkServiceGetEventStreamOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(ArkServiceGetEventStreamOKBody) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +// NewArkServiceGetEventStreamDefault creates a ArkServiceGetEventStreamDefault with default headers values +func NewArkServiceGetEventStreamDefault(code int) *ArkServiceGetEventStreamDefault { + return &ArkServiceGetEventStreamDefault{ + _statusCode: code, + } +} + +/* +ArkServiceGetEventStreamDefault describes a response with status code -1, with default header values. + +An unexpected error response. +*/ +type ArkServiceGetEventStreamDefault struct { + _statusCode int + + Payload *models.RPCStatus +} + +// IsSuccess returns true when this ark service get event stream default response has a 2xx status code +func (o *ArkServiceGetEventStreamDefault) IsSuccess() bool { + return o._statusCode/100 == 2 +} + +// IsRedirect returns true when this ark service get event stream default response has a 3xx status code +func (o *ArkServiceGetEventStreamDefault) IsRedirect() bool { + return o._statusCode/100 == 3 +} + +// IsClientError returns true when this ark service get event stream default response has a 4xx status code +func (o *ArkServiceGetEventStreamDefault) IsClientError() bool { + return o._statusCode/100 == 4 +} + +// IsServerError returns true when this ark service get event stream default response has a 5xx status code +func (o *ArkServiceGetEventStreamDefault) IsServerError() bool { + return o._statusCode/100 == 5 +} + +// IsCode returns true when this ark service get event stream default response a status code equal to that given +func (o *ArkServiceGetEventStreamDefault) IsCode(code int) bool { + return o._statusCode == code +} + +// Code gets the status code for the ark service get event stream default response +func (o *ArkServiceGetEventStreamDefault) Code() int { + return o._statusCode +} + +func (o *ArkServiceGetEventStreamDefault) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/events][%d] ArkService_GetEventStream default %s", o._statusCode, payload) +} + +func (o *ArkServiceGetEventStreamDefault) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/events][%d] ArkService_GetEventStream default %s", o._statusCode, payload) +} + +func (o *ArkServiceGetEventStreamDefault) GetPayload() *models.RPCStatus { + return o.Payload +} + +func (o *ArkServiceGetEventStreamDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(models.RPCStatus) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +/* +ArkServiceGetEventStreamOKBody Stream result of v1GetEventStreamResponse +swagger:model ArkServiceGetEventStreamOKBody +*/ +type ArkServiceGetEventStreamOKBody struct { + + // error + Error *models.RPCStatus `json:"error,omitempty"` + + // result + Result *models.V1GetEventStreamResponse `json:"result,omitempty"` +} + +// Validate validates this ark service get event stream o k body +func (o *ArkServiceGetEventStreamOKBody) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateError(formats); err != nil { + res = append(res, err) + } + + if err := o.validateResult(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *ArkServiceGetEventStreamOKBody) validateError(formats strfmt.Registry) error { + if swag.IsZero(o.Error) { // not required + return nil + } + + if o.Error != nil { + if err := o.Error.Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("arkServiceGetEventStreamOK" + "." + "error") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("arkServiceGetEventStreamOK" + "." + "error") + } + return err + } + } + + return nil +} + +func (o *ArkServiceGetEventStreamOKBody) validateResult(formats strfmt.Registry) error { + if swag.IsZero(o.Result) { // not required + return nil + } + + if o.Result != nil { + if err := o.Result.Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("arkServiceGetEventStreamOK" + "." + "result") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("arkServiceGetEventStreamOK" + "." + "result") + } + return err + } + } + + return nil +} + +// ContextValidate validate this ark service get event stream o k body based on the context it is used +func (o *ArkServiceGetEventStreamOKBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := o.contextValidateError(ctx, formats); err != nil { + res = append(res, err) + } + + if err := o.contextValidateResult(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *ArkServiceGetEventStreamOKBody) contextValidateError(ctx context.Context, formats strfmt.Registry) error { + + if o.Error != nil { + + if swag.IsZero(o.Error) { // not required + return nil + } + + if err := o.Error.ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("arkServiceGetEventStreamOK" + "." + "error") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("arkServiceGetEventStreamOK" + "." + "error") + } + return err + } + } + + return nil +} + +func (o *ArkServiceGetEventStreamOKBody) contextValidateResult(ctx context.Context, formats strfmt.Registry) error { + + if o.Result != nil { + + if swag.IsZero(o.Result) { // not required + return nil + } + + if err := o.Result.ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("arkServiceGetEventStreamOK" + "." + "result") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("arkServiceGetEventStreamOK" + "." + "result") + } + return err + } + } + + return nil +} + +// MarshalBinary interface implementation +func (o *ArkServiceGetEventStreamOKBody) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ArkServiceGetEventStreamOKBody) UnmarshalBinary(b []byte) error { + var res ArkServiceGetEventStreamOKBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} diff --git a/pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_get_info_parameters.go b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_info_parameters.go similarity index 71% rename from pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_get_info_parameters.go rename to pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_info_parameters.go index 68f8c5e..87c4707 100644 --- a/pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_get_info_parameters.go +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_info_parameters.go @@ -13,51 +13,51 @@ import ( "github.com/go-openapi/errors" "github.com/go-openapi/runtime" cr "github.com/go-openapi/runtime/client" - - strfmt "github.com/go-openapi/strfmt" + "github.com/go-openapi/strfmt" ) -// NewArkServiceGetInfoParams creates a new ArkServiceGetInfoParams object -// with the default values initialized. +// NewArkServiceGetInfoParams creates a new ArkServiceGetInfoParams object, +// with the default timeout for this client. +// +// Default values are not hydrated, since defaults are normally applied by the API server side. +// +// To enforce default values in parameter, use SetDefaults or WithDefaults. func NewArkServiceGetInfoParams() *ArkServiceGetInfoParams { - return &ArkServiceGetInfoParams{ - timeout: cr.DefaultTimeout, } } // NewArkServiceGetInfoParamsWithTimeout creates a new ArkServiceGetInfoParams object -// with the default values initialized, and the ability to set a timeout on a request +// with the ability to set a timeout on a request. func NewArkServiceGetInfoParamsWithTimeout(timeout time.Duration) *ArkServiceGetInfoParams { - return &ArkServiceGetInfoParams{ - timeout: timeout, } } // NewArkServiceGetInfoParamsWithContext creates a new ArkServiceGetInfoParams object -// with the default values initialized, and the ability to set a context for a request +// with the ability to set a context for a request. func NewArkServiceGetInfoParamsWithContext(ctx context.Context) *ArkServiceGetInfoParams { - return &ArkServiceGetInfoParams{ - Context: ctx, } } // NewArkServiceGetInfoParamsWithHTTPClient creates a new ArkServiceGetInfoParams object -// with the default values initialized, and the ability to set a custom HTTPClient for a request +// with the ability to set a custom HTTPClient for a request. func NewArkServiceGetInfoParamsWithHTTPClient(client *http.Client) *ArkServiceGetInfoParams { - return &ArkServiceGetInfoParams{ HTTPClient: client, } } -/*ArkServiceGetInfoParams contains all the parameters to send to the API endpoint -for the ark service get info operation typically these are written to a http.Request +/* +ArkServiceGetInfoParams contains all the parameters to send to the API endpoint + + for the ark service get info operation. + + Typically these are written to a http.Request. */ type ArkServiceGetInfoParams struct { timeout time.Duration @@ -65,6 +65,21 @@ type ArkServiceGetInfoParams struct { HTTPClient *http.Client } +// WithDefaults hydrates default values in the ark service get info params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ArkServiceGetInfoParams) WithDefaults() *ArkServiceGetInfoParams { + o.SetDefaults() + return o +} + +// SetDefaults hydrates default values in the ark service get info params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ArkServiceGetInfoParams) SetDefaults() { + // no default values defined for this parameter +} + // WithTimeout adds the timeout to the ark service get info params func (o *ArkServiceGetInfoParams) WithTimeout(timeout time.Duration) *ArkServiceGetInfoParams { o.SetTimeout(timeout) diff --git a/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_info_responses.go b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_info_responses.go new file mode 100644 index 0000000..947de99 --- /dev/null +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_info_responses.go @@ -0,0 +1,187 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package ark_service + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "encoding/json" + "fmt" + "io" + + "github.com/go-openapi/runtime" + "github.com/go-openapi/strfmt" + + "github.com/ark-network/ark-sdk/client/rest/service/models" +) + +// ArkServiceGetInfoReader is a Reader for the ArkServiceGetInfo structure. +type ArkServiceGetInfoReader struct { + formats strfmt.Registry +} + +// ReadResponse reads a server response into the received o. +func (o *ArkServiceGetInfoReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) { + switch response.Code() { + case 200: + result := NewArkServiceGetInfoOK() + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + return result, nil + default: + result := NewArkServiceGetInfoDefault(response.Code()) + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + if response.Code()/100 == 2 { + return result, nil + } + return nil, result + } +} + +// NewArkServiceGetInfoOK creates a ArkServiceGetInfoOK with default headers values +func NewArkServiceGetInfoOK() *ArkServiceGetInfoOK { + return &ArkServiceGetInfoOK{} +} + +/* +ArkServiceGetInfoOK describes a response with status code 200, with default header values. + +A successful response. +*/ +type ArkServiceGetInfoOK struct { + Payload *models.V1GetInfoResponse +} + +// IsSuccess returns true when this ark service get info o k response has a 2xx status code +func (o *ArkServiceGetInfoOK) IsSuccess() bool { + return true +} + +// IsRedirect returns true when this ark service get info o k response has a 3xx status code +func (o *ArkServiceGetInfoOK) IsRedirect() bool { + return false +} + +// IsClientError returns true when this ark service get info o k response has a 4xx status code +func (o *ArkServiceGetInfoOK) IsClientError() bool { + return false +} + +// IsServerError returns true when this ark service get info o k response has a 5xx status code +func (o *ArkServiceGetInfoOK) IsServerError() bool { + return false +} + +// IsCode returns true when this ark service get info o k response a status code equal to that given +func (o *ArkServiceGetInfoOK) IsCode(code int) bool { + return code == 200 +} + +// Code gets the status code for the ark service get info o k response +func (o *ArkServiceGetInfoOK) Code() int { + return 200 +} + +func (o *ArkServiceGetInfoOK) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/info][%d] arkServiceGetInfoOK %s", 200, payload) +} + +func (o *ArkServiceGetInfoOK) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/info][%d] arkServiceGetInfoOK %s", 200, payload) +} + +func (o *ArkServiceGetInfoOK) GetPayload() *models.V1GetInfoResponse { + return o.Payload +} + +func (o *ArkServiceGetInfoOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(models.V1GetInfoResponse) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +// NewArkServiceGetInfoDefault creates a ArkServiceGetInfoDefault with default headers values +func NewArkServiceGetInfoDefault(code int) *ArkServiceGetInfoDefault { + return &ArkServiceGetInfoDefault{ + _statusCode: code, + } +} + +/* +ArkServiceGetInfoDefault describes a response with status code -1, with default header values. + +An unexpected error response. +*/ +type ArkServiceGetInfoDefault struct { + _statusCode int + + Payload *models.RPCStatus +} + +// IsSuccess returns true when this ark service get info default response has a 2xx status code +func (o *ArkServiceGetInfoDefault) IsSuccess() bool { + return o._statusCode/100 == 2 +} + +// IsRedirect returns true when this ark service get info default response has a 3xx status code +func (o *ArkServiceGetInfoDefault) IsRedirect() bool { + return o._statusCode/100 == 3 +} + +// IsClientError returns true when this ark service get info default response has a 4xx status code +func (o *ArkServiceGetInfoDefault) IsClientError() bool { + return o._statusCode/100 == 4 +} + +// IsServerError returns true when this ark service get info default response has a 5xx status code +func (o *ArkServiceGetInfoDefault) IsServerError() bool { + return o._statusCode/100 == 5 +} + +// IsCode returns true when this ark service get info default response a status code equal to that given +func (o *ArkServiceGetInfoDefault) IsCode(code int) bool { + return o._statusCode == code +} + +// Code gets the status code for the ark service get info default response +func (o *ArkServiceGetInfoDefault) Code() int { + return o._statusCode +} + +func (o *ArkServiceGetInfoDefault) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/info][%d] ArkService_GetInfo default %s", o._statusCode, payload) +} + +func (o *ArkServiceGetInfoDefault) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/info][%d] ArkService_GetInfo default %s", o._statusCode, payload) +} + +func (o *ArkServiceGetInfoDefault) GetPayload() *models.RPCStatus { + return o.Payload +} + +func (o *ArkServiceGetInfoDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(models.RPCStatus) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} diff --git a/pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_get_round_by_id_parameters.go b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_round_by_id_parameters.go similarity index 74% rename from pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_get_round_by_id_parameters.go rename to pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_round_by_id_parameters.go index 5c0fce7..31744b3 100644 --- a/pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_get_round_by_id_parameters.go +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_round_by_id_parameters.go @@ -13,55 +13,55 @@ import ( "github.com/go-openapi/errors" "github.com/go-openapi/runtime" cr "github.com/go-openapi/runtime/client" - - strfmt "github.com/go-openapi/strfmt" + "github.com/go-openapi/strfmt" ) -// NewArkServiceGetRoundByIDParams creates a new ArkServiceGetRoundByIDParams object -// with the default values initialized. +// NewArkServiceGetRoundByIDParams creates a new ArkServiceGetRoundByIDParams object, +// with the default timeout for this client. +// +// Default values are not hydrated, since defaults are normally applied by the API server side. +// +// To enforce default values in parameter, use SetDefaults or WithDefaults. func NewArkServiceGetRoundByIDParams() *ArkServiceGetRoundByIDParams { - var () return &ArkServiceGetRoundByIDParams{ - timeout: cr.DefaultTimeout, } } // NewArkServiceGetRoundByIDParamsWithTimeout creates a new ArkServiceGetRoundByIDParams object -// with the default values initialized, and the ability to set a timeout on a request +// with the ability to set a timeout on a request. func NewArkServiceGetRoundByIDParamsWithTimeout(timeout time.Duration) *ArkServiceGetRoundByIDParams { - var () return &ArkServiceGetRoundByIDParams{ - timeout: timeout, } } // NewArkServiceGetRoundByIDParamsWithContext creates a new ArkServiceGetRoundByIDParams object -// with the default values initialized, and the ability to set a context for a request +// with the ability to set a context for a request. func NewArkServiceGetRoundByIDParamsWithContext(ctx context.Context) *ArkServiceGetRoundByIDParams { - var () return &ArkServiceGetRoundByIDParams{ - Context: ctx, } } // NewArkServiceGetRoundByIDParamsWithHTTPClient creates a new ArkServiceGetRoundByIDParams object -// with the default values initialized, and the ability to set a custom HTTPClient for a request +// with the ability to set a custom HTTPClient for a request. func NewArkServiceGetRoundByIDParamsWithHTTPClient(client *http.Client) *ArkServiceGetRoundByIDParams { - var () return &ArkServiceGetRoundByIDParams{ HTTPClient: client, } } -/*ArkServiceGetRoundByIDParams contains all the parameters to send to the API endpoint -for the ark service get round by Id operation typically these are written to a http.Request +/* +ArkServiceGetRoundByIDParams contains all the parameters to send to the API endpoint + + for the ark service get round by Id operation. + + Typically these are written to a http.Request. */ type ArkServiceGetRoundByIDParams struct { - /*ID*/ + // ID. ID string timeout time.Duration @@ -69,6 +69,21 @@ type ArkServiceGetRoundByIDParams struct { HTTPClient *http.Client } +// WithDefaults hydrates default values in the ark service get round by Id params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ArkServiceGetRoundByIDParams) WithDefaults() *ArkServiceGetRoundByIDParams { + o.SetDefaults() + return o +} + +// SetDefaults hydrates default values in the ark service get round by Id params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ArkServiceGetRoundByIDParams) SetDefaults() { + // no default values defined for this parameter +} + // WithTimeout adds the timeout to the ark service get round by Id params func (o *ArkServiceGetRoundByIDParams) WithTimeout(timeout time.Duration) *ArkServiceGetRoundByIDParams { o.SetTimeout(timeout) diff --git a/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_round_by_id_responses.go b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_round_by_id_responses.go new file mode 100644 index 0000000..43c709a --- /dev/null +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_round_by_id_responses.go @@ -0,0 +1,187 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package ark_service + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "encoding/json" + "fmt" + "io" + + "github.com/go-openapi/runtime" + "github.com/go-openapi/strfmt" + + "github.com/ark-network/ark-sdk/client/rest/service/models" +) + +// ArkServiceGetRoundByIDReader is a Reader for the ArkServiceGetRoundByID structure. +type ArkServiceGetRoundByIDReader struct { + formats strfmt.Registry +} + +// ReadResponse reads a server response into the received o. +func (o *ArkServiceGetRoundByIDReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) { + switch response.Code() { + case 200: + result := NewArkServiceGetRoundByIDOK() + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + return result, nil + default: + result := NewArkServiceGetRoundByIDDefault(response.Code()) + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + if response.Code()/100 == 2 { + return result, nil + } + return nil, result + } +} + +// NewArkServiceGetRoundByIDOK creates a ArkServiceGetRoundByIDOK with default headers values +func NewArkServiceGetRoundByIDOK() *ArkServiceGetRoundByIDOK { + return &ArkServiceGetRoundByIDOK{} +} + +/* +ArkServiceGetRoundByIDOK describes a response with status code 200, with default header values. + +A successful response. +*/ +type ArkServiceGetRoundByIDOK struct { + Payload *models.V1GetRoundByIDResponse +} + +// IsSuccess returns true when this ark service get round by Id o k response has a 2xx status code +func (o *ArkServiceGetRoundByIDOK) IsSuccess() bool { + return true +} + +// IsRedirect returns true when this ark service get round by Id o k response has a 3xx status code +func (o *ArkServiceGetRoundByIDOK) IsRedirect() bool { + return false +} + +// IsClientError returns true when this ark service get round by Id o k response has a 4xx status code +func (o *ArkServiceGetRoundByIDOK) IsClientError() bool { + return false +} + +// IsServerError returns true when this ark service get round by Id o k response has a 5xx status code +func (o *ArkServiceGetRoundByIDOK) IsServerError() bool { + return false +} + +// IsCode returns true when this ark service get round by Id o k response a status code equal to that given +func (o *ArkServiceGetRoundByIDOK) IsCode(code int) bool { + return code == 200 +} + +// Code gets the status code for the ark service get round by Id o k response +func (o *ArkServiceGetRoundByIDOK) Code() int { + return 200 +} + +func (o *ArkServiceGetRoundByIDOK) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/round/id/{id}][%d] arkServiceGetRoundByIdOK %s", 200, payload) +} + +func (o *ArkServiceGetRoundByIDOK) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/round/id/{id}][%d] arkServiceGetRoundByIdOK %s", 200, payload) +} + +func (o *ArkServiceGetRoundByIDOK) GetPayload() *models.V1GetRoundByIDResponse { + return o.Payload +} + +func (o *ArkServiceGetRoundByIDOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(models.V1GetRoundByIDResponse) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +// NewArkServiceGetRoundByIDDefault creates a ArkServiceGetRoundByIDDefault with default headers values +func NewArkServiceGetRoundByIDDefault(code int) *ArkServiceGetRoundByIDDefault { + return &ArkServiceGetRoundByIDDefault{ + _statusCode: code, + } +} + +/* +ArkServiceGetRoundByIDDefault describes a response with status code -1, with default header values. + +An unexpected error response. +*/ +type ArkServiceGetRoundByIDDefault struct { + _statusCode int + + Payload *models.RPCStatus +} + +// IsSuccess returns true when this ark service get round by Id default response has a 2xx status code +func (o *ArkServiceGetRoundByIDDefault) IsSuccess() bool { + return o._statusCode/100 == 2 +} + +// IsRedirect returns true when this ark service get round by Id default response has a 3xx status code +func (o *ArkServiceGetRoundByIDDefault) IsRedirect() bool { + return o._statusCode/100 == 3 +} + +// IsClientError returns true when this ark service get round by Id default response has a 4xx status code +func (o *ArkServiceGetRoundByIDDefault) IsClientError() bool { + return o._statusCode/100 == 4 +} + +// IsServerError returns true when this ark service get round by Id default response has a 5xx status code +func (o *ArkServiceGetRoundByIDDefault) IsServerError() bool { + return o._statusCode/100 == 5 +} + +// IsCode returns true when this ark service get round by Id default response a status code equal to that given +func (o *ArkServiceGetRoundByIDDefault) IsCode(code int) bool { + return o._statusCode == code +} + +// Code gets the status code for the ark service get round by Id default response +func (o *ArkServiceGetRoundByIDDefault) Code() int { + return o._statusCode +} + +func (o *ArkServiceGetRoundByIDDefault) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/round/id/{id}][%d] ArkService_GetRoundById default %s", o._statusCode, payload) +} + +func (o *ArkServiceGetRoundByIDDefault) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/round/id/{id}][%d] ArkService_GetRoundById default %s", o._statusCode, payload) +} + +func (o *ArkServiceGetRoundByIDDefault) GetPayload() *models.RPCStatus { + return o.Payload +} + +func (o *ArkServiceGetRoundByIDDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(models.RPCStatus) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} diff --git a/pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_get_round_parameters.go b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_round_parameters.go similarity index 73% rename from pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_get_round_parameters.go rename to pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_round_parameters.go index da3405e..003f360 100644 --- a/pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_get_round_parameters.go +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_round_parameters.go @@ -13,55 +13,55 @@ import ( "github.com/go-openapi/errors" "github.com/go-openapi/runtime" cr "github.com/go-openapi/runtime/client" - - strfmt "github.com/go-openapi/strfmt" + "github.com/go-openapi/strfmt" ) -// NewArkServiceGetRoundParams creates a new ArkServiceGetRoundParams object -// with the default values initialized. +// NewArkServiceGetRoundParams creates a new ArkServiceGetRoundParams object, +// with the default timeout for this client. +// +// Default values are not hydrated, since defaults are normally applied by the API server side. +// +// To enforce default values in parameter, use SetDefaults or WithDefaults. func NewArkServiceGetRoundParams() *ArkServiceGetRoundParams { - var () return &ArkServiceGetRoundParams{ - timeout: cr.DefaultTimeout, } } // NewArkServiceGetRoundParamsWithTimeout creates a new ArkServiceGetRoundParams object -// with the default values initialized, and the ability to set a timeout on a request +// with the ability to set a timeout on a request. func NewArkServiceGetRoundParamsWithTimeout(timeout time.Duration) *ArkServiceGetRoundParams { - var () return &ArkServiceGetRoundParams{ - timeout: timeout, } } // NewArkServiceGetRoundParamsWithContext creates a new ArkServiceGetRoundParams object -// with the default values initialized, and the ability to set a context for a request +// with the ability to set a context for a request. func NewArkServiceGetRoundParamsWithContext(ctx context.Context) *ArkServiceGetRoundParams { - var () return &ArkServiceGetRoundParams{ - Context: ctx, } } // NewArkServiceGetRoundParamsWithHTTPClient creates a new ArkServiceGetRoundParams object -// with the default values initialized, and the ability to set a custom HTTPClient for a request +// with the ability to set a custom HTTPClient for a request. func NewArkServiceGetRoundParamsWithHTTPClient(client *http.Client) *ArkServiceGetRoundParams { - var () return &ArkServiceGetRoundParams{ HTTPClient: client, } } -/*ArkServiceGetRoundParams contains all the parameters to send to the API endpoint -for the ark service get round operation typically these are written to a http.Request +/* +ArkServiceGetRoundParams contains all the parameters to send to the API endpoint + + for the ark service get round operation. + + Typically these are written to a http.Request. */ type ArkServiceGetRoundParams struct { - /*Txid*/ + // Txid. Txid string timeout time.Duration @@ -69,6 +69,21 @@ type ArkServiceGetRoundParams struct { HTTPClient *http.Client } +// WithDefaults hydrates default values in the ark service get round params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ArkServiceGetRoundParams) WithDefaults() *ArkServiceGetRoundParams { + o.SetDefaults() + return o +} + +// SetDefaults hydrates default values in the ark service get round params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ArkServiceGetRoundParams) SetDefaults() { + // no default values defined for this parameter +} + // WithTimeout adds the timeout to the ark service get round params func (o *ArkServiceGetRoundParams) WithTimeout(timeout time.Duration) *ArkServiceGetRoundParams { o.SetTimeout(timeout) diff --git a/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_round_responses.go b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_round_responses.go new file mode 100644 index 0000000..db4af8f --- /dev/null +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_get_round_responses.go @@ -0,0 +1,187 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package ark_service + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "encoding/json" + "fmt" + "io" + + "github.com/go-openapi/runtime" + "github.com/go-openapi/strfmt" + + "github.com/ark-network/ark-sdk/client/rest/service/models" +) + +// ArkServiceGetRoundReader is a Reader for the ArkServiceGetRound structure. +type ArkServiceGetRoundReader struct { + formats strfmt.Registry +} + +// ReadResponse reads a server response into the received o. +func (o *ArkServiceGetRoundReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) { + switch response.Code() { + case 200: + result := NewArkServiceGetRoundOK() + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + return result, nil + default: + result := NewArkServiceGetRoundDefault(response.Code()) + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + if response.Code()/100 == 2 { + return result, nil + } + return nil, result + } +} + +// NewArkServiceGetRoundOK creates a ArkServiceGetRoundOK with default headers values +func NewArkServiceGetRoundOK() *ArkServiceGetRoundOK { + return &ArkServiceGetRoundOK{} +} + +/* +ArkServiceGetRoundOK describes a response with status code 200, with default header values. + +A successful response. +*/ +type ArkServiceGetRoundOK struct { + Payload *models.V1GetRoundResponse +} + +// IsSuccess returns true when this ark service get round o k response has a 2xx status code +func (o *ArkServiceGetRoundOK) IsSuccess() bool { + return true +} + +// IsRedirect returns true when this ark service get round o k response has a 3xx status code +func (o *ArkServiceGetRoundOK) IsRedirect() bool { + return false +} + +// IsClientError returns true when this ark service get round o k response has a 4xx status code +func (o *ArkServiceGetRoundOK) IsClientError() bool { + return false +} + +// IsServerError returns true when this ark service get round o k response has a 5xx status code +func (o *ArkServiceGetRoundOK) IsServerError() bool { + return false +} + +// IsCode returns true when this ark service get round o k response a status code equal to that given +func (o *ArkServiceGetRoundOK) IsCode(code int) bool { + return code == 200 +} + +// Code gets the status code for the ark service get round o k response +func (o *ArkServiceGetRoundOK) Code() int { + return 200 +} + +func (o *ArkServiceGetRoundOK) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/round/{txid}][%d] arkServiceGetRoundOK %s", 200, payload) +} + +func (o *ArkServiceGetRoundOK) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/round/{txid}][%d] arkServiceGetRoundOK %s", 200, payload) +} + +func (o *ArkServiceGetRoundOK) GetPayload() *models.V1GetRoundResponse { + return o.Payload +} + +func (o *ArkServiceGetRoundOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(models.V1GetRoundResponse) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +// NewArkServiceGetRoundDefault creates a ArkServiceGetRoundDefault with default headers values +func NewArkServiceGetRoundDefault(code int) *ArkServiceGetRoundDefault { + return &ArkServiceGetRoundDefault{ + _statusCode: code, + } +} + +/* +ArkServiceGetRoundDefault describes a response with status code -1, with default header values. + +An unexpected error response. +*/ +type ArkServiceGetRoundDefault struct { + _statusCode int + + Payload *models.RPCStatus +} + +// IsSuccess returns true when this ark service get round default response has a 2xx status code +func (o *ArkServiceGetRoundDefault) IsSuccess() bool { + return o._statusCode/100 == 2 +} + +// IsRedirect returns true when this ark service get round default response has a 3xx status code +func (o *ArkServiceGetRoundDefault) IsRedirect() bool { + return o._statusCode/100 == 3 +} + +// IsClientError returns true when this ark service get round default response has a 4xx status code +func (o *ArkServiceGetRoundDefault) IsClientError() bool { + return o._statusCode/100 == 4 +} + +// IsServerError returns true when this ark service get round default response has a 5xx status code +func (o *ArkServiceGetRoundDefault) IsServerError() bool { + return o._statusCode/100 == 5 +} + +// IsCode returns true when this ark service get round default response a status code equal to that given +func (o *ArkServiceGetRoundDefault) IsCode(code int) bool { + return o._statusCode == code +} + +// Code gets the status code for the ark service get round default response +func (o *ArkServiceGetRoundDefault) Code() int { + return o._statusCode +} + +func (o *ArkServiceGetRoundDefault) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/round/{txid}][%d] ArkService_GetRound default %s", o._statusCode, payload) +} + +func (o *ArkServiceGetRoundDefault) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/round/{txid}][%d] ArkService_GetRound default %s", o._statusCode, payload) +} + +func (o *ArkServiceGetRoundDefault) GetPayload() *models.RPCStatus { + return o.Payload +} + +func (o *ArkServiceGetRoundDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(models.RPCStatus) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} diff --git a/pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_list_vtxos_parameters.go b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_list_vtxos_parameters.go similarity index 74% rename from pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_list_vtxos_parameters.go rename to pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_list_vtxos_parameters.go index 962c00a..4b9ce1d 100644 --- a/pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_list_vtxos_parameters.go +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_list_vtxos_parameters.go @@ -13,55 +13,55 @@ import ( "github.com/go-openapi/errors" "github.com/go-openapi/runtime" cr "github.com/go-openapi/runtime/client" - - strfmt "github.com/go-openapi/strfmt" + "github.com/go-openapi/strfmt" ) -// NewArkServiceListVtxosParams creates a new ArkServiceListVtxosParams object -// with the default values initialized. +// NewArkServiceListVtxosParams creates a new ArkServiceListVtxosParams object, +// with the default timeout for this client. +// +// Default values are not hydrated, since defaults are normally applied by the API server side. +// +// To enforce default values in parameter, use SetDefaults or WithDefaults. func NewArkServiceListVtxosParams() *ArkServiceListVtxosParams { - var () return &ArkServiceListVtxosParams{ - timeout: cr.DefaultTimeout, } } // NewArkServiceListVtxosParamsWithTimeout creates a new ArkServiceListVtxosParams object -// with the default values initialized, and the ability to set a timeout on a request +// with the ability to set a timeout on a request. func NewArkServiceListVtxosParamsWithTimeout(timeout time.Duration) *ArkServiceListVtxosParams { - var () return &ArkServiceListVtxosParams{ - timeout: timeout, } } // NewArkServiceListVtxosParamsWithContext creates a new ArkServiceListVtxosParams object -// with the default values initialized, and the ability to set a context for a request +// with the ability to set a context for a request. func NewArkServiceListVtxosParamsWithContext(ctx context.Context) *ArkServiceListVtxosParams { - var () return &ArkServiceListVtxosParams{ - Context: ctx, } } // NewArkServiceListVtxosParamsWithHTTPClient creates a new ArkServiceListVtxosParams object -// with the default values initialized, and the ability to set a custom HTTPClient for a request +// with the ability to set a custom HTTPClient for a request. func NewArkServiceListVtxosParamsWithHTTPClient(client *http.Client) *ArkServiceListVtxosParams { - var () return &ArkServiceListVtxosParams{ HTTPClient: client, } } -/*ArkServiceListVtxosParams contains all the parameters to send to the API endpoint -for the ark service list vtxos operation typically these are written to a http.Request +/* +ArkServiceListVtxosParams contains all the parameters to send to the API endpoint + + for the ark service list vtxos operation. + + Typically these are written to a http.Request. */ type ArkServiceListVtxosParams struct { - /*Address*/ + // Address. Address string timeout time.Duration @@ -69,6 +69,21 @@ type ArkServiceListVtxosParams struct { HTTPClient *http.Client } +// WithDefaults hydrates default values in the ark service list vtxos params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ArkServiceListVtxosParams) WithDefaults() *ArkServiceListVtxosParams { + o.SetDefaults() + return o +} + +// SetDefaults hydrates default values in the ark service list vtxos params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ArkServiceListVtxosParams) SetDefaults() { + // no default values defined for this parameter +} + // WithTimeout adds the timeout to the ark service list vtxos params func (o *ArkServiceListVtxosParams) WithTimeout(timeout time.Duration) *ArkServiceListVtxosParams { o.SetTimeout(timeout) diff --git a/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_list_vtxos_responses.go b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_list_vtxos_responses.go new file mode 100644 index 0000000..5ae7712 --- /dev/null +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_list_vtxos_responses.go @@ -0,0 +1,187 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package ark_service + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "encoding/json" + "fmt" + "io" + + "github.com/go-openapi/runtime" + "github.com/go-openapi/strfmt" + + "github.com/ark-network/ark-sdk/client/rest/service/models" +) + +// ArkServiceListVtxosReader is a Reader for the ArkServiceListVtxos structure. +type ArkServiceListVtxosReader struct { + formats strfmt.Registry +} + +// ReadResponse reads a server response into the received o. +func (o *ArkServiceListVtxosReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) { + switch response.Code() { + case 200: + result := NewArkServiceListVtxosOK() + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + return result, nil + default: + result := NewArkServiceListVtxosDefault(response.Code()) + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + if response.Code()/100 == 2 { + return result, nil + } + return nil, result + } +} + +// NewArkServiceListVtxosOK creates a ArkServiceListVtxosOK with default headers values +func NewArkServiceListVtxosOK() *ArkServiceListVtxosOK { + return &ArkServiceListVtxosOK{} +} + +/* +ArkServiceListVtxosOK describes a response with status code 200, with default header values. + +A successful response. +*/ +type ArkServiceListVtxosOK struct { + Payload *models.V1ListVtxosResponse +} + +// IsSuccess returns true when this ark service list vtxos o k response has a 2xx status code +func (o *ArkServiceListVtxosOK) IsSuccess() bool { + return true +} + +// IsRedirect returns true when this ark service list vtxos o k response has a 3xx status code +func (o *ArkServiceListVtxosOK) IsRedirect() bool { + return false +} + +// IsClientError returns true when this ark service list vtxos o k response has a 4xx status code +func (o *ArkServiceListVtxosOK) IsClientError() bool { + return false +} + +// IsServerError returns true when this ark service list vtxos o k response has a 5xx status code +func (o *ArkServiceListVtxosOK) IsServerError() bool { + return false +} + +// IsCode returns true when this ark service list vtxos o k response a status code equal to that given +func (o *ArkServiceListVtxosOK) IsCode(code int) bool { + return code == 200 +} + +// Code gets the status code for the ark service list vtxos o k response +func (o *ArkServiceListVtxosOK) Code() int { + return 200 +} + +func (o *ArkServiceListVtxosOK) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/vtxos/{address}][%d] arkServiceListVtxosOK %s", 200, payload) +} + +func (o *ArkServiceListVtxosOK) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/vtxos/{address}][%d] arkServiceListVtxosOK %s", 200, payload) +} + +func (o *ArkServiceListVtxosOK) GetPayload() *models.V1ListVtxosResponse { + return o.Payload +} + +func (o *ArkServiceListVtxosOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(models.V1ListVtxosResponse) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +// NewArkServiceListVtxosDefault creates a ArkServiceListVtxosDefault with default headers values +func NewArkServiceListVtxosDefault(code int) *ArkServiceListVtxosDefault { + return &ArkServiceListVtxosDefault{ + _statusCode: code, + } +} + +/* +ArkServiceListVtxosDefault describes a response with status code -1, with default header values. + +An unexpected error response. +*/ +type ArkServiceListVtxosDefault struct { + _statusCode int + + Payload *models.RPCStatus +} + +// IsSuccess returns true when this ark service list vtxos default response has a 2xx status code +func (o *ArkServiceListVtxosDefault) IsSuccess() bool { + return o._statusCode/100 == 2 +} + +// IsRedirect returns true when this ark service list vtxos default response has a 3xx status code +func (o *ArkServiceListVtxosDefault) IsRedirect() bool { + return o._statusCode/100 == 3 +} + +// IsClientError returns true when this ark service list vtxos default response has a 4xx status code +func (o *ArkServiceListVtxosDefault) IsClientError() bool { + return o._statusCode/100 == 4 +} + +// IsServerError returns true when this ark service list vtxos default response has a 5xx status code +func (o *ArkServiceListVtxosDefault) IsServerError() bool { + return o._statusCode/100 == 5 +} + +// IsCode returns true when this ark service list vtxos default response a status code equal to that given +func (o *ArkServiceListVtxosDefault) IsCode(code int) bool { + return o._statusCode == code +} + +// Code gets the status code for the ark service list vtxos default response +func (o *ArkServiceListVtxosDefault) Code() int { + return o._statusCode +} + +func (o *ArkServiceListVtxosDefault) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/vtxos/{address}][%d] ArkService_ListVtxos default %s", o._statusCode, payload) +} + +func (o *ArkServiceListVtxosDefault) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/vtxos/{address}][%d] ArkService_ListVtxos default %s", o._statusCode, payload) +} + +func (o *ArkServiceListVtxosDefault) GetPayload() *models.RPCStatus { + return o.Payload +} + +func (o *ArkServiceListVtxosDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(models.RPCStatus) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} diff --git a/pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_onboard_parameters.go b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_onboard_parameters.go similarity index 73% rename from pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_onboard_parameters.go rename to pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_onboard_parameters.go index 882ea7d..60ad8c3 100644 --- a/pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_onboard_parameters.go +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_onboard_parameters.go @@ -13,57 +13,57 @@ import ( "github.com/go-openapi/errors" "github.com/go-openapi/runtime" cr "github.com/go-openapi/runtime/client" + "github.com/go-openapi/strfmt" - strfmt "github.com/go-openapi/strfmt" - - models "github.com/ark-network/ark-sdk/rest/service/models" + "github.com/ark-network/ark-sdk/client/rest/service/models" ) -// NewArkServiceOnboardParams creates a new ArkServiceOnboardParams object -// with the default values initialized. +// NewArkServiceOnboardParams creates a new ArkServiceOnboardParams object, +// with the default timeout for this client. +// +// Default values are not hydrated, since defaults are normally applied by the API server side. +// +// To enforce default values in parameter, use SetDefaults or WithDefaults. func NewArkServiceOnboardParams() *ArkServiceOnboardParams { - var () return &ArkServiceOnboardParams{ - timeout: cr.DefaultTimeout, } } // NewArkServiceOnboardParamsWithTimeout creates a new ArkServiceOnboardParams object -// with the default values initialized, and the ability to set a timeout on a request +// with the ability to set a timeout on a request. func NewArkServiceOnboardParamsWithTimeout(timeout time.Duration) *ArkServiceOnboardParams { - var () return &ArkServiceOnboardParams{ - timeout: timeout, } } // NewArkServiceOnboardParamsWithContext creates a new ArkServiceOnboardParams object -// with the default values initialized, and the ability to set a context for a request +// with the ability to set a context for a request. func NewArkServiceOnboardParamsWithContext(ctx context.Context) *ArkServiceOnboardParams { - var () return &ArkServiceOnboardParams{ - Context: ctx, } } // NewArkServiceOnboardParamsWithHTTPClient creates a new ArkServiceOnboardParams object -// with the default values initialized, and the ability to set a custom HTTPClient for a request +// with the ability to set a custom HTTPClient for a request. func NewArkServiceOnboardParamsWithHTTPClient(client *http.Client) *ArkServiceOnboardParams { - var () return &ArkServiceOnboardParams{ HTTPClient: client, } } -/*ArkServiceOnboardParams contains all the parameters to send to the API endpoint -for the ark service onboard operation typically these are written to a http.Request +/* +ArkServiceOnboardParams contains all the parameters to send to the API endpoint + + for the ark service onboard operation. + + Typically these are written to a http.Request. */ type ArkServiceOnboardParams struct { - /*Body*/ + // Body. Body *models.V1OnboardRequest timeout time.Duration @@ -71,6 +71,21 @@ type ArkServiceOnboardParams struct { HTTPClient *http.Client } +// WithDefaults hydrates default values in the ark service onboard params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ArkServiceOnboardParams) WithDefaults() *ArkServiceOnboardParams { + o.SetDefaults() + return o +} + +// SetDefaults hydrates default values in the ark service onboard params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ArkServiceOnboardParams) SetDefaults() { + // no default values defined for this parameter +} + // WithTimeout adds the timeout to the ark service onboard params func (o *ArkServiceOnboardParams) WithTimeout(timeout time.Duration) *ArkServiceOnboardParams { o.SetTimeout(timeout) @@ -122,7 +137,6 @@ func (o *ArkServiceOnboardParams) WriteToRequest(r runtime.ClientRequest, reg st return err } var res []error - if o.Body != nil { if err := r.SetBodyParam(o.Body); err != nil { return err diff --git a/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_onboard_responses.go b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_onboard_responses.go new file mode 100644 index 0000000..5732c3d --- /dev/null +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_onboard_responses.go @@ -0,0 +1,185 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package ark_service + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "encoding/json" + "fmt" + "io" + + "github.com/go-openapi/runtime" + "github.com/go-openapi/strfmt" + + "github.com/ark-network/ark-sdk/client/rest/service/models" +) + +// ArkServiceOnboardReader is a Reader for the ArkServiceOnboard structure. +type ArkServiceOnboardReader struct { + formats strfmt.Registry +} + +// ReadResponse reads a server response into the received o. +func (o *ArkServiceOnboardReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) { + switch response.Code() { + case 200: + result := NewArkServiceOnboardOK() + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + return result, nil + default: + result := NewArkServiceOnboardDefault(response.Code()) + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + if response.Code()/100 == 2 { + return result, nil + } + return nil, result + } +} + +// NewArkServiceOnboardOK creates a ArkServiceOnboardOK with default headers values +func NewArkServiceOnboardOK() *ArkServiceOnboardOK { + return &ArkServiceOnboardOK{} +} + +/* +ArkServiceOnboardOK describes a response with status code 200, with default header values. + +A successful response. +*/ +type ArkServiceOnboardOK struct { + Payload models.V1OnboardResponse +} + +// IsSuccess returns true when this ark service onboard o k response has a 2xx status code +func (o *ArkServiceOnboardOK) IsSuccess() bool { + return true +} + +// IsRedirect returns true when this ark service onboard o k response has a 3xx status code +func (o *ArkServiceOnboardOK) IsRedirect() bool { + return false +} + +// IsClientError returns true when this ark service onboard o k response has a 4xx status code +func (o *ArkServiceOnboardOK) IsClientError() bool { + return false +} + +// IsServerError returns true when this ark service onboard o k response has a 5xx status code +func (o *ArkServiceOnboardOK) IsServerError() bool { + return false +} + +// IsCode returns true when this ark service onboard o k response a status code equal to that given +func (o *ArkServiceOnboardOK) IsCode(code int) bool { + return code == 200 +} + +// Code gets the status code for the ark service onboard o k response +func (o *ArkServiceOnboardOK) Code() int { + return 200 +} + +func (o *ArkServiceOnboardOK) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[POST /v1/onboard][%d] arkServiceOnboardOK %s", 200, payload) +} + +func (o *ArkServiceOnboardOK) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[POST /v1/onboard][%d] arkServiceOnboardOK %s", 200, payload) +} + +func (o *ArkServiceOnboardOK) GetPayload() models.V1OnboardResponse { + return o.Payload +} + +func (o *ArkServiceOnboardOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + // response payload + if err := consumer.Consume(response.Body(), &o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +// NewArkServiceOnboardDefault creates a ArkServiceOnboardDefault with default headers values +func NewArkServiceOnboardDefault(code int) *ArkServiceOnboardDefault { + return &ArkServiceOnboardDefault{ + _statusCode: code, + } +} + +/* +ArkServiceOnboardDefault describes a response with status code -1, with default header values. + +An unexpected error response. +*/ +type ArkServiceOnboardDefault struct { + _statusCode int + + Payload *models.RPCStatus +} + +// IsSuccess returns true when this ark service onboard default response has a 2xx status code +func (o *ArkServiceOnboardDefault) IsSuccess() bool { + return o._statusCode/100 == 2 +} + +// IsRedirect returns true when this ark service onboard default response has a 3xx status code +func (o *ArkServiceOnboardDefault) IsRedirect() bool { + return o._statusCode/100 == 3 +} + +// IsClientError returns true when this ark service onboard default response has a 4xx status code +func (o *ArkServiceOnboardDefault) IsClientError() bool { + return o._statusCode/100 == 4 +} + +// IsServerError returns true when this ark service onboard default response has a 5xx status code +func (o *ArkServiceOnboardDefault) IsServerError() bool { + return o._statusCode/100 == 5 +} + +// IsCode returns true when this ark service onboard default response a status code equal to that given +func (o *ArkServiceOnboardDefault) IsCode(code int) bool { + return o._statusCode == code +} + +// Code gets the status code for the ark service onboard default response +func (o *ArkServiceOnboardDefault) Code() int { + return o._statusCode +} + +func (o *ArkServiceOnboardDefault) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[POST /v1/onboard][%d] ArkService_Onboard default %s", o._statusCode, payload) +} + +func (o *ArkServiceOnboardDefault) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[POST /v1/onboard][%d] ArkService_Onboard default %s", o._statusCode, payload) +} + +func (o *ArkServiceOnboardDefault) GetPayload() *models.RPCStatus { + return o.Payload +} + +func (o *ArkServiceOnboardDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(models.RPCStatus) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} diff --git a/pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_ping_parameters.go b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_ping_parameters.go similarity index 73% rename from pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_ping_parameters.go rename to pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_ping_parameters.go index ecfdeb9..8c2d7d4 100644 --- a/pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_ping_parameters.go +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_ping_parameters.go @@ -13,55 +13,55 @@ import ( "github.com/go-openapi/errors" "github.com/go-openapi/runtime" cr "github.com/go-openapi/runtime/client" - - strfmt "github.com/go-openapi/strfmt" + "github.com/go-openapi/strfmt" ) -// NewArkServicePingParams creates a new ArkServicePingParams object -// with the default values initialized. +// NewArkServicePingParams creates a new ArkServicePingParams object, +// with the default timeout for this client. +// +// Default values are not hydrated, since defaults are normally applied by the API server side. +// +// To enforce default values in parameter, use SetDefaults or WithDefaults. func NewArkServicePingParams() *ArkServicePingParams { - var () return &ArkServicePingParams{ - timeout: cr.DefaultTimeout, } } // NewArkServicePingParamsWithTimeout creates a new ArkServicePingParams object -// with the default values initialized, and the ability to set a timeout on a request +// with the ability to set a timeout on a request. func NewArkServicePingParamsWithTimeout(timeout time.Duration) *ArkServicePingParams { - var () return &ArkServicePingParams{ - timeout: timeout, } } // NewArkServicePingParamsWithContext creates a new ArkServicePingParams object -// with the default values initialized, and the ability to set a context for a request +// with the ability to set a context for a request. func NewArkServicePingParamsWithContext(ctx context.Context) *ArkServicePingParams { - var () return &ArkServicePingParams{ - Context: ctx, } } // NewArkServicePingParamsWithHTTPClient creates a new ArkServicePingParams object -// with the default values initialized, and the ability to set a custom HTTPClient for a request +// with the ability to set a custom HTTPClient for a request. func NewArkServicePingParamsWithHTTPClient(client *http.Client) *ArkServicePingParams { - var () return &ArkServicePingParams{ HTTPClient: client, } } -/*ArkServicePingParams contains all the parameters to send to the API endpoint -for the ark service ping operation typically these are written to a http.Request +/* +ArkServicePingParams contains all the parameters to send to the API endpoint + + for the ark service ping operation. + + Typically these are written to a http.Request. */ type ArkServicePingParams struct { - /*PaymentID*/ + // PaymentID. PaymentID string timeout time.Duration @@ -69,6 +69,21 @@ type ArkServicePingParams struct { HTTPClient *http.Client } +// WithDefaults hydrates default values in the ark service ping params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ArkServicePingParams) WithDefaults() *ArkServicePingParams { + o.SetDefaults() + return o +} + +// SetDefaults hydrates default values in the ark service ping params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ArkServicePingParams) SetDefaults() { + // no default values defined for this parameter +} + // WithTimeout adds the timeout to the ark service ping params func (o *ArkServicePingParams) WithTimeout(timeout time.Duration) *ArkServicePingParams { o.SetTimeout(timeout) diff --git a/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_ping_responses.go b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_ping_responses.go new file mode 100644 index 0000000..bf9e54b --- /dev/null +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_ping_responses.go @@ -0,0 +1,187 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package ark_service + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "encoding/json" + "fmt" + "io" + + "github.com/go-openapi/runtime" + "github.com/go-openapi/strfmt" + + "github.com/ark-network/ark-sdk/client/rest/service/models" +) + +// ArkServicePingReader is a Reader for the ArkServicePing structure. +type ArkServicePingReader struct { + formats strfmt.Registry +} + +// ReadResponse reads a server response into the received o. +func (o *ArkServicePingReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) { + switch response.Code() { + case 200: + result := NewArkServicePingOK() + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + return result, nil + default: + result := NewArkServicePingDefault(response.Code()) + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + if response.Code()/100 == 2 { + return result, nil + } + return nil, result + } +} + +// NewArkServicePingOK creates a ArkServicePingOK with default headers values +func NewArkServicePingOK() *ArkServicePingOK { + return &ArkServicePingOK{} +} + +/* +ArkServicePingOK describes a response with status code 200, with default header values. + +A successful response. +*/ +type ArkServicePingOK struct { + Payload *models.V1PingResponse +} + +// IsSuccess returns true when this ark service ping o k response has a 2xx status code +func (o *ArkServicePingOK) IsSuccess() bool { + return true +} + +// IsRedirect returns true when this ark service ping o k response has a 3xx status code +func (o *ArkServicePingOK) IsRedirect() bool { + return false +} + +// IsClientError returns true when this ark service ping o k response has a 4xx status code +func (o *ArkServicePingOK) IsClientError() bool { + return false +} + +// IsServerError returns true when this ark service ping o k response has a 5xx status code +func (o *ArkServicePingOK) IsServerError() bool { + return false +} + +// IsCode returns true when this ark service ping o k response a status code equal to that given +func (o *ArkServicePingOK) IsCode(code int) bool { + return code == 200 +} + +// Code gets the status code for the ark service ping o k response +func (o *ArkServicePingOK) Code() int { + return 200 +} + +func (o *ArkServicePingOK) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/ping/{paymentId}][%d] arkServicePingOK %s", 200, payload) +} + +func (o *ArkServicePingOK) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/ping/{paymentId}][%d] arkServicePingOK %s", 200, payload) +} + +func (o *ArkServicePingOK) GetPayload() *models.V1PingResponse { + return o.Payload +} + +func (o *ArkServicePingOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(models.V1PingResponse) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +// NewArkServicePingDefault creates a ArkServicePingDefault with default headers values +func NewArkServicePingDefault(code int) *ArkServicePingDefault { + return &ArkServicePingDefault{ + _statusCode: code, + } +} + +/* +ArkServicePingDefault describes a response with status code -1, with default header values. + +An unexpected error response. +*/ +type ArkServicePingDefault struct { + _statusCode int + + Payload *models.RPCStatus +} + +// IsSuccess returns true when this ark service ping default response has a 2xx status code +func (o *ArkServicePingDefault) IsSuccess() bool { + return o._statusCode/100 == 2 +} + +// IsRedirect returns true when this ark service ping default response has a 3xx status code +func (o *ArkServicePingDefault) IsRedirect() bool { + return o._statusCode/100 == 3 +} + +// IsClientError returns true when this ark service ping default response has a 4xx status code +func (o *ArkServicePingDefault) IsClientError() bool { + return o._statusCode/100 == 4 +} + +// IsServerError returns true when this ark service ping default response has a 5xx status code +func (o *ArkServicePingDefault) IsServerError() bool { + return o._statusCode/100 == 5 +} + +// IsCode returns true when this ark service ping default response a status code equal to that given +func (o *ArkServicePingDefault) IsCode(code int) bool { + return o._statusCode == code +} + +// Code gets the status code for the ark service ping default response +func (o *ArkServicePingDefault) Code() int { + return o._statusCode +} + +func (o *ArkServicePingDefault) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/ping/{paymentId}][%d] ArkService_Ping default %s", o._statusCode, payload) +} + +func (o *ArkServicePingDefault) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1/ping/{paymentId}][%d] ArkService_Ping default %s", o._statusCode, payload) +} + +func (o *ArkServicePingDefault) GetPayload() *models.RPCStatus { + return o.Payload +} + +func (o *ArkServicePingDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(models.RPCStatus) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} diff --git a/pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_register_payment_parameters.go b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_register_payment_parameters.go similarity index 73% rename from pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_register_payment_parameters.go rename to pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_register_payment_parameters.go index d05d91f..a8f7c08 100644 --- a/pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_register_payment_parameters.go +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_register_payment_parameters.go @@ -13,57 +13,57 @@ import ( "github.com/go-openapi/errors" "github.com/go-openapi/runtime" cr "github.com/go-openapi/runtime/client" + "github.com/go-openapi/strfmt" - strfmt "github.com/go-openapi/strfmt" - - models "github.com/ark-network/ark-sdk/rest/service/models" + "github.com/ark-network/ark-sdk/client/rest/service/models" ) -// NewArkServiceRegisterPaymentParams creates a new ArkServiceRegisterPaymentParams object -// with the default values initialized. +// NewArkServiceRegisterPaymentParams creates a new ArkServiceRegisterPaymentParams object, +// with the default timeout for this client. +// +// Default values are not hydrated, since defaults are normally applied by the API server side. +// +// To enforce default values in parameter, use SetDefaults or WithDefaults. func NewArkServiceRegisterPaymentParams() *ArkServiceRegisterPaymentParams { - var () return &ArkServiceRegisterPaymentParams{ - timeout: cr.DefaultTimeout, } } // NewArkServiceRegisterPaymentParamsWithTimeout creates a new ArkServiceRegisterPaymentParams object -// with the default values initialized, and the ability to set a timeout on a request +// with the ability to set a timeout on a request. func NewArkServiceRegisterPaymentParamsWithTimeout(timeout time.Duration) *ArkServiceRegisterPaymentParams { - var () return &ArkServiceRegisterPaymentParams{ - timeout: timeout, } } // NewArkServiceRegisterPaymentParamsWithContext creates a new ArkServiceRegisterPaymentParams object -// with the default values initialized, and the ability to set a context for a request +// with the ability to set a context for a request. func NewArkServiceRegisterPaymentParamsWithContext(ctx context.Context) *ArkServiceRegisterPaymentParams { - var () return &ArkServiceRegisterPaymentParams{ - Context: ctx, } } // NewArkServiceRegisterPaymentParamsWithHTTPClient creates a new ArkServiceRegisterPaymentParams object -// with the default values initialized, and the ability to set a custom HTTPClient for a request +// with the ability to set a custom HTTPClient for a request. func NewArkServiceRegisterPaymentParamsWithHTTPClient(client *http.Client) *ArkServiceRegisterPaymentParams { - var () return &ArkServiceRegisterPaymentParams{ HTTPClient: client, } } -/*ArkServiceRegisterPaymentParams contains all the parameters to send to the API endpoint -for the ark service register payment operation typically these are written to a http.Request +/* +ArkServiceRegisterPaymentParams contains all the parameters to send to the API endpoint + + for the ark service register payment operation. + + Typically these are written to a http.Request. */ type ArkServiceRegisterPaymentParams struct { - /*Body*/ + // Body. Body *models.V1RegisterPaymentRequest timeout time.Duration @@ -71,6 +71,21 @@ type ArkServiceRegisterPaymentParams struct { HTTPClient *http.Client } +// WithDefaults hydrates default values in the ark service register payment params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ArkServiceRegisterPaymentParams) WithDefaults() *ArkServiceRegisterPaymentParams { + o.SetDefaults() + return o +} + +// SetDefaults hydrates default values in the ark service register payment params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ArkServiceRegisterPaymentParams) SetDefaults() { + // no default values defined for this parameter +} + // WithTimeout adds the timeout to the ark service register payment params func (o *ArkServiceRegisterPaymentParams) WithTimeout(timeout time.Duration) *ArkServiceRegisterPaymentParams { o.SetTimeout(timeout) @@ -122,7 +137,6 @@ func (o *ArkServiceRegisterPaymentParams) WriteToRequest(r runtime.ClientRequest return err } var res []error - if o.Body != nil { if err := r.SetBodyParam(o.Body); err != nil { return err diff --git a/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_register_payment_responses.go b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_register_payment_responses.go new file mode 100644 index 0000000..cd01b3f --- /dev/null +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_register_payment_responses.go @@ -0,0 +1,187 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package ark_service + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "encoding/json" + "fmt" + "io" + + "github.com/go-openapi/runtime" + "github.com/go-openapi/strfmt" + + "github.com/ark-network/ark-sdk/client/rest/service/models" +) + +// ArkServiceRegisterPaymentReader is a Reader for the ArkServiceRegisterPayment structure. +type ArkServiceRegisterPaymentReader struct { + formats strfmt.Registry +} + +// ReadResponse reads a server response into the received o. +func (o *ArkServiceRegisterPaymentReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) { + switch response.Code() { + case 200: + result := NewArkServiceRegisterPaymentOK() + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + return result, nil + default: + result := NewArkServiceRegisterPaymentDefault(response.Code()) + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + if response.Code()/100 == 2 { + return result, nil + } + return nil, result + } +} + +// NewArkServiceRegisterPaymentOK creates a ArkServiceRegisterPaymentOK with default headers values +func NewArkServiceRegisterPaymentOK() *ArkServiceRegisterPaymentOK { + return &ArkServiceRegisterPaymentOK{} +} + +/* +ArkServiceRegisterPaymentOK describes a response with status code 200, with default header values. + +A successful response. +*/ +type ArkServiceRegisterPaymentOK struct { + Payload *models.V1RegisterPaymentResponse +} + +// IsSuccess returns true when this ark service register payment o k response has a 2xx status code +func (o *ArkServiceRegisterPaymentOK) IsSuccess() bool { + return true +} + +// IsRedirect returns true when this ark service register payment o k response has a 3xx status code +func (o *ArkServiceRegisterPaymentOK) IsRedirect() bool { + return false +} + +// IsClientError returns true when this ark service register payment o k response has a 4xx status code +func (o *ArkServiceRegisterPaymentOK) IsClientError() bool { + return false +} + +// IsServerError returns true when this ark service register payment o k response has a 5xx status code +func (o *ArkServiceRegisterPaymentOK) IsServerError() bool { + return false +} + +// IsCode returns true when this ark service register payment o k response a status code equal to that given +func (o *ArkServiceRegisterPaymentOK) IsCode(code int) bool { + return code == 200 +} + +// Code gets the status code for the ark service register payment o k response +func (o *ArkServiceRegisterPaymentOK) Code() int { + return 200 +} + +func (o *ArkServiceRegisterPaymentOK) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[POST /v1/payment/register][%d] arkServiceRegisterPaymentOK %s", 200, payload) +} + +func (o *ArkServiceRegisterPaymentOK) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[POST /v1/payment/register][%d] arkServiceRegisterPaymentOK %s", 200, payload) +} + +func (o *ArkServiceRegisterPaymentOK) GetPayload() *models.V1RegisterPaymentResponse { + return o.Payload +} + +func (o *ArkServiceRegisterPaymentOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(models.V1RegisterPaymentResponse) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +// NewArkServiceRegisterPaymentDefault creates a ArkServiceRegisterPaymentDefault with default headers values +func NewArkServiceRegisterPaymentDefault(code int) *ArkServiceRegisterPaymentDefault { + return &ArkServiceRegisterPaymentDefault{ + _statusCode: code, + } +} + +/* +ArkServiceRegisterPaymentDefault describes a response with status code -1, with default header values. + +An unexpected error response. +*/ +type ArkServiceRegisterPaymentDefault struct { + _statusCode int + + Payload *models.RPCStatus +} + +// IsSuccess returns true when this ark service register payment default response has a 2xx status code +func (o *ArkServiceRegisterPaymentDefault) IsSuccess() bool { + return o._statusCode/100 == 2 +} + +// IsRedirect returns true when this ark service register payment default response has a 3xx status code +func (o *ArkServiceRegisterPaymentDefault) IsRedirect() bool { + return o._statusCode/100 == 3 +} + +// IsClientError returns true when this ark service register payment default response has a 4xx status code +func (o *ArkServiceRegisterPaymentDefault) IsClientError() bool { + return o._statusCode/100 == 4 +} + +// IsServerError returns true when this ark service register payment default response has a 5xx status code +func (o *ArkServiceRegisterPaymentDefault) IsServerError() bool { + return o._statusCode/100 == 5 +} + +// IsCode returns true when this ark service register payment default response a status code equal to that given +func (o *ArkServiceRegisterPaymentDefault) IsCode(code int) bool { + return o._statusCode == code +} + +// Code gets the status code for the ark service register payment default response +func (o *ArkServiceRegisterPaymentDefault) Code() int { + return o._statusCode +} + +func (o *ArkServiceRegisterPaymentDefault) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[POST /v1/payment/register][%d] ArkService_RegisterPayment default %s", o._statusCode, payload) +} + +func (o *ArkServiceRegisterPaymentDefault) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[POST /v1/payment/register][%d] ArkService_RegisterPayment default %s", o._statusCode, payload) +} + +func (o *ArkServiceRegisterPaymentDefault) GetPayload() *models.RPCStatus { + return o.Payload +} + +func (o *ArkServiceRegisterPaymentDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(models.RPCStatus) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} diff --git a/pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_trusted_onboarding_parameters.go b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_trusted_onboarding_parameters.go similarity index 74% rename from pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_trusted_onboarding_parameters.go rename to pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_trusted_onboarding_parameters.go index 5a7077e..a740eb8 100644 --- a/pkg/client-sdk/rest/service/arkservicerestclient/ark_service/ark_service_trusted_onboarding_parameters.go +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_trusted_onboarding_parameters.go @@ -13,57 +13,57 @@ import ( "github.com/go-openapi/errors" "github.com/go-openapi/runtime" cr "github.com/go-openapi/runtime/client" + "github.com/go-openapi/strfmt" - strfmt "github.com/go-openapi/strfmt" - - models "github.com/ark-network/ark-sdk/rest/service/models" + "github.com/ark-network/ark-sdk/client/rest/service/models" ) -// NewArkServiceTrustedOnboardingParams creates a new ArkServiceTrustedOnboardingParams object -// with the default values initialized. +// NewArkServiceTrustedOnboardingParams creates a new ArkServiceTrustedOnboardingParams object, +// with the default timeout for this client. +// +// Default values are not hydrated, since defaults are normally applied by the API server side. +// +// To enforce default values in parameter, use SetDefaults or WithDefaults. func NewArkServiceTrustedOnboardingParams() *ArkServiceTrustedOnboardingParams { - var () return &ArkServiceTrustedOnboardingParams{ - timeout: cr.DefaultTimeout, } } // NewArkServiceTrustedOnboardingParamsWithTimeout creates a new ArkServiceTrustedOnboardingParams object -// with the default values initialized, and the ability to set a timeout on a request +// with the ability to set a timeout on a request. func NewArkServiceTrustedOnboardingParamsWithTimeout(timeout time.Duration) *ArkServiceTrustedOnboardingParams { - var () return &ArkServiceTrustedOnboardingParams{ - timeout: timeout, } } // NewArkServiceTrustedOnboardingParamsWithContext creates a new ArkServiceTrustedOnboardingParams object -// with the default values initialized, and the ability to set a context for a request +// with the ability to set a context for a request. func NewArkServiceTrustedOnboardingParamsWithContext(ctx context.Context) *ArkServiceTrustedOnboardingParams { - var () return &ArkServiceTrustedOnboardingParams{ - Context: ctx, } } // NewArkServiceTrustedOnboardingParamsWithHTTPClient creates a new ArkServiceTrustedOnboardingParams object -// with the default values initialized, and the ability to set a custom HTTPClient for a request +// with the ability to set a custom HTTPClient for a request. func NewArkServiceTrustedOnboardingParamsWithHTTPClient(client *http.Client) *ArkServiceTrustedOnboardingParams { - var () return &ArkServiceTrustedOnboardingParams{ HTTPClient: client, } } -/*ArkServiceTrustedOnboardingParams contains all the parameters to send to the API endpoint -for the ark service trusted onboarding operation typically these are written to a http.Request +/* +ArkServiceTrustedOnboardingParams contains all the parameters to send to the API endpoint + + for the ark service trusted onboarding operation. + + Typically these are written to a http.Request. */ type ArkServiceTrustedOnboardingParams struct { - /*Body*/ + // Body. Body *models.V1TrustedOnboardingRequest timeout time.Duration @@ -71,6 +71,21 @@ type ArkServiceTrustedOnboardingParams struct { HTTPClient *http.Client } +// WithDefaults hydrates default values in the ark service trusted onboarding params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ArkServiceTrustedOnboardingParams) WithDefaults() *ArkServiceTrustedOnboardingParams { + o.SetDefaults() + return o +} + +// SetDefaults hydrates default values in the ark service trusted onboarding params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ArkServiceTrustedOnboardingParams) SetDefaults() { + // no default values defined for this parameter +} + // WithTimeout adds the timeout to the ark service trusted onboarding params func (o *ArkServiceTrustedOnboardingParams) WithTimeout(timeout time.Duration) *ArkServiceTrustedOnboardingParams { o.SetTimeout(timeout) @@ -122,7 +137,6 @@ func (o *ArkServiceTrustedOnboardingParams) WriteToRequest(r runtime.ClientReque return err } var res []error - if o.Body != nil { if err := r.SetBodyParam(o.Body); err != nil { return err diff --git a/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_trusted_onboarding_responses.go b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_trusted_onboarding_responses.go new file mode 100644 index 0000000..78d28d4 --- /dev/null +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_trusted_onboarding_responses.go @@ -0,0 +1,187 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package ark_service + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "encoding/json" + "fmt" + "io" + + "github.com/go-openapi/runtime" + "github.com/go-openapi/strfmt" + + "github.com/ark-network/ark-sdk/client/rest/service/models" +) + +// ArkServiceTrustedOnboardingReader is a Reader for the ArkServiceTrustedOnboarding structure. +type ArkServiceTrustedOnboardingReader struct { + formats strfmt.Registry +} + +// ReadResponse reads a server response into the received o. +func (o *ArkServiceTrustedOnboardingReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) { + switch response.Code() { + case 200: + result := NewArkServiceTrustedOnboardingOK() + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + return result, nil + default: + result := NewArkServiceTrustedOnboardingDefault(response.Code()) + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + if response.Code()/100 == 2 { + return result, nil + } + return nil, result + } +} + +// NewArkServiceTrustedOnboardingOK creates a ArkServiceTrustedOnboardingOK with default headers values +func NewArkServiceTrustedOnboardingOK() *ArkServiceTrustedOnboardingOK { + return &ArkServiceTrustedOnboardingOK{} +} + +/* +ArkServiceTrustedOnboardingOK describes a response with status code 200, with default header values. + +A successful response. +*/ +type ArkServiceTrustedOnboardingOK struct { + Payload *models.V1TrustedOnboardingResponse +} + +// IsSuccess returns true when this ark service trusted onboarding o k response has a 2xx status code +func (o *ArkServiceTrustedOnboardingOK) IsSuccess() bool { + return true +} + +// IsRedirect returns true when this ark service trusted onboarding o k response has a 3xx status code +func (o *ArkServiceTrustedOnboardingOK) IsRedirect() bool { + return false +} + +// IsClientError returns true when this ark service trusted onboarding o k response has a 4xx status code +func (o *ArkServiceTrustedOnboardingOK) IsClientError() bool { + return false +} + +// IsServerError returns true when this ark service trusted onboarding o k response has a 5xx status code +func (o *ArkServiceTrustedOnboardingOK) IsServerError() bool { + return false +} + +// IsCode returns true when this ark service trusted onboarding o k response a status code equal to that given +func (o *ArkServiceTrustedOnboardingOK) IsCode(code int) bool { + return code == 200 +} + +// Code gets the status code for the ark service trusted onboarding o k response +func (o *ArkServiceTrustedOnboardingOK) Code() int { + return 200 +} + +func (o *ArkServiceTrustedOnboardingOK) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[POST /v1/onboard/address][%d] arkServiceTrustedOnboardingOK %s", 200, payload) +} + +func (o *ArkServiceTrustedOnboardingOK) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[POST /v1/onboard/address][%d] arkServiceTrustedOnboardingOK %s", 200, payload) +} + +func (o *ArkServiceTrustedOnboardingOK) GetPayload() *models.V1TrustedOnboardingResponse { + return o.Payload +} + +func (o *ArkServiceTrustedOnboardingOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(models.V1TrustedOnboardingResponse) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +// NewArkServiceTrustedOnboardingDefault creates a ArkServiceTrustedOnboardingDefault with default headers values +func NewArkServiceTrustedOnboardingDefault(code int) *ArkServiceTrustedOnboardingDefault { + return &ArkServiceTrustedOnboardingDefault{ + _statusCode: code, + } +} + +/* +ArkServiceTrustedOnboardingDefault describes a response with status code -1, with default header values. + +An unexpected error response. +*/ +type ArkServiceTrustedOnboardingDefault struct { + _statusCode int + + Payload *models.RPCStatus +} + +// IsSuccess returns true when this ark service trusted onboarding default response has a 2xx status code +func (o *ArkServiceTrustedOnboardingDefault) IsSuccess() bool { + return o._statusCode/100 == 2 +} + +// IsRedirect returns true when this ark service trusted onboarding default response has a 3xx status code +func (o *ArkServiceTrustedOnboardingDefault) IsRedirect() bool { + return o._statusCode/100 == 3 +} + +// IsClientError returns true when this ark service trusted onboarding default response has a 4xx status code +func (o *ArkServiceTrustedOnboardingDefault) IsClientError() bool { + return o._statusCode/100 == 4 +} + +// IsServerError returns true when this ark service trusted onboarding default response has a 5xx status code +func (o *ArkServiceTrustedOnboardingDefault) IsServerError() bool { + return o._statusCode/100 == 5 +} + +// IsCode returns true when this ark service trusted onboarding default response a status code equal to that given +func (o *ArkServiceTrustedOnboardingDefault) IsCode(code int) bool { + return o._statusCode == code +} + +// Code gets the status code for the ark service trusted onboarding default response +func (o *ArkServiceTrustedOnboardingDefault) Code() int { + return o._statusCode +} + +func (o *ArkServiceTrustedOnboardingDefault) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[POST /v1/onboard/address][%d] ArkService_TrustedOnboarding default %s", o._statusCode, payload) +} + +func (o *ArkServiceTrustedOnboardingDefault) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[POST /v1/onboard/address][%d] ArkService_TrustedOnboarding default %s", o._statusCode, payload) +} + +func (o *ArkServiceTrustedOnboardingDefault) GetPayload() *models.RPCStatus { + return o.Payload +} + +func (o *ArkServiceTrustedOnboardingDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(models.RPCStatus) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} diff --git a/pkg/client-sdk/rest/service/arkservicerestclient/ark_v1_service_proto_client.go b/pkg/client-sdk/client/rest/service/arkservice/ark_v1_service_proto_client.go similarity index 94% rename from pkg/client-sdk/rest/service/arkservicerestclient/ark_v1_service_proto_client.go rename to pkg/client-sdk/client/rest/service/arkservice/ark_v1_service_proto_client.go index 34145cc..8b1ed9f 100644 --- a/pkg/client-sdk/rest/service/arkservicerestclient/ark_v1_service_proto_client.go +++ b/pkg/client-sdk/client/rest/service/arkservice/ark_v1_service_proto_client.go @@ -1,6 +1,6 @@ // Code generated by go-swagger; DO NOT EDIT. -package arkservicerestclient +package arkservice // This file was generated by the swagger tool. // Editing this file might prove futile when you re-run the swagger generate command @@ -8,10 +8,9 @@ package arkservicerestclient import ( "github.com/go-openapi/runtime" httptransport "github.com/go-openapi/runtime/client" + "github.com/go-openapi/strfmt" - strfmt "github.com/go-openapi/strfmt" - - "github.com/ark-network/ark-sdk/rest/service/arkservicerestclient/ark_service" + "github.com/ark-network/ark-sdk/client/rest/service/arkservice/ark_service" ) // Default ark v1 service proto HTTP client. @@ -56,9 +55,7 @@ func New(transport runtime.ClientTransport, formats strfmt.Registry) *ArkV1Servi cli := new(ArkV1ServiceProto) cli.Transport = transport - cli.ArkService = ark_service.New(transport, formats) - return cli } @@ -103,7 +100,7 @@ func (cfg *TransportConfig) WithSchemes(schemes []string) *TransportConfig { // ArkV1ServiceProto is a client for ark v1 service proto type ArkV1ServiceProto struct { - ArkService *ark_service.Client + ArkService ark_service.ClientService Transport runtime.ClientTransport } @@ -111,7 +108,5 @@ type ArkV1ServiceProto struct { // SetTransport changes the transport on the client and all its subresources func (c *ArkV1ServiceProto) SetTransport(transport runtime.ClientTransport) { c.Transport = transport - c.ArkService.SetTransport(transport) - } diff --git a/pkg/client-sdk/client/rest/service/models/protobuf_any.go b/pkg/client-sdk/client/rest/service/models/protobuf_any.go new file mode 100644 index 0000000..f25b51e --- /dev/null +++ b/pkg/client-sdk/client/rest/service/models/protobuf_any.go @@ -0,0 +1,127 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + "encoding/json" + + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// ProtobufAny protobuf any +// +// swagger:model protobufAny +type ProtobufAny struct { + + // at type + AtType string `json:"@type,omitempty"` + + // protobuf any + ProtobufAny map[string]interface{} `json:"-"` +} + +// UnmarshalJSON unmarshals this object with additional properties from JSON +func (m *ProtobufAny) UnmarshalJSON(data []byte) error { + // stage 1, bind the properties + var stage1 struct { + + // at type + AtType string `json:"@type,omitempty"` + } + if err := json.Unmarshal(data, &stage1); err != nil { + return err + } + var rcv ProtobufAny + + rcv.AtType = stage1.AtType + *m = rcv + + // stage 2, remove properties and add to map + stage2 := make(map[string]json.RawMessage) + if err := json.Unmarshal(data, &stage2); err != nil { + return err + } + + delete(stage2, "@type") + // stage 3, add additional properties values + if len(stage2) > 0 { + result := make(map[string]interface{}) + for k, v := range stage2 { + var toadd interface{} + if err := json.Unmarshal(v, &toadd); err != nil { + return err + } + result[k] = toadd + } + m.ProtobufAny = result + } + + return nil +} + +// MarshalJSON marshals this object with additional properties into a JSON object +func (m ProtobufAny) MarshalJSON() ([]byte, error) { + var stage1 struct { + + // at type + AtType string `json:"@type,omitempty"` + } + + stage1.AtType = m.AtType + + // make JSON object for known properties + props, err := json.Marshal(stage1) + if err != nil { + return nil, err + } + + if len(m.ProtobufAny) == 0 { // no additional properties + return props, nil + } + + // make JSON object for the additional properties + additional, err := json.Marshal(m.ProtobufAny) + if err != nil { + return nil, err + } + + if len(props) < 3 { // "{}": only additional properties + return additional, nil + } + + // concatenate the 2 objects + return swag.ConcatJSON(props, additional), nil +} + +// Validate validates this protobuf any +func (m *ProtobufAny) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this protobuf any based on context it is used +func (m *ProtobufAny) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (m *ProtobufAny) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *ProtobufAny) UnmarshalBinary(b []byte) error { + var res ProtobufAny + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/pkg/client-sdk/rest/service/models/rpc_status.go b/pkg/client-sdk/client/rest/service/models/rpc_status.go similarity index 59% rename from pkg/client-sdk/rest/service/models/rpc_status.go rename to pkg/client-sdk/client/rest/service/models/rpc_status.go index 27f6c53..922eaa8 100644 --- a/pkg/client-sdk/rest/service/models/rpc_status.go +++ b/pkg/client-sdk/client/rest/service/models/rpc_status.go @@ -6,15 +6,16 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( + "context" "strconv" - strfmt "github.com/go-openapi/strfmt" - "github.com/go-openapi/errors" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // RPCStatus rpc status +// // swagger:model rpcStatus type RPCStatus struct { @@ -43,7 +44,6 @@ func (m *RPCStatus) Validate(formats strfmt.Registry) error { } func (m *RPCStatus) validateDetails(formats strfmt.Registry) error { - if swag.IsZero(m.Details) { // not required return nil } @@ -57,6 +57,47 @@ func (m *RPCStatus) validateDetails(formats strfmt.Registry) error { if err := m.Details[i].Validate(formats); err != nil { if ve, ok := err.(*errors.Validation); ok { return ve.ValidateName("details" + "." + strconv.Itoa(i)) + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("details" + "." + strconv.Itoa(i)) + } + return err + } + } + + } + + return nil +} + +// ContextValidate validate this rpc status based on the context it is used +func (m *RPCStatus) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := m.contextValidateDetails(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (m *RPCStatus) contextValidateDetails(ctx context.Context, formats strfmt.Registry) error { + + for i := 0; i < len(m.Details); i++ { + + if m.Details[i] != nil { + + if swag.IsZero(m.Details[i]) { // not required + return nil + } + + if err := m.Details[i].ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("details" + "." + strconv.Itoa(i)) + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("details" + "." + strconv.Itoa(i)) } return err } diff --git a/pkg/client-sdk/rest/service/models/v1_claim_payment_request.go b/pkg/client-sdk/client/rest/service/models/v1_claim_payment_request.go similarity index 60% rename from pkg/client-sdk/rest/service/models/v1_claim_payment_request.go rename to pkg/client-sdk/client/rest/service/models/v1_claim_payment_request.go index 4a5a7d3..e41e42e 100644 --- a/pkg/client-sdk/rest/service/models/v1_claim_payment_request.go +++ b/pkg/client-sdk/client/rest/service/models/v1_claim_payment_request.go @@ -6,15 +6,16 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( + "context" "strconv" - strfmt "github.com/go-openapi/strfmt" - "github.com/go-openapi/errors" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // V1ClaimPaymentRequest v1 claim payment request +// // swagger:model v1ClaimPaymentRequest type V1ClaimPaymentRequest struct { @@ -40,7 +41,6 @@ func (m *V1ClaimPaymentRequest) Validate(formats strfmt.Registry) error { } func (m *V1ClaimPaymentRequest) validateOutputs(formats strfmt.Registry) error { - if swag.IsZero(m.Outputs) { // not required return nil } @@ -54,6 +54,47 @@ func (m *V1ClaimPaymentRequest) validateOutputs(formats strfmt.Registry) error { if err := m.Outputs[i].Validate(formats); err != nil { if ve, ok := err.(*errors.Validation); ok { return ve.ValidateName("outputs" + "." + strconv.Itoa(i)) + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("outputs" + "." + strconv.Itoa(i)) + } + return err + } + } + + } + + return nil +} + +// ContextValidate validate this v1 claim payment request based on the context it is used +func (m *V1ClaimPaymentRequest) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := m.contextValidateOutputs(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (m *V1ClaimPaymentRequest) contextValidateOutputs(ctx context.Context, formats strfmt.Registry) error { + + for i := 0; i < len(m.Outputs); i++ { + + if m.Outputs[i] != nil { + + if swag.IsZero(m.Outputs[i]) { // not required + return nil + } + + if err := m.Outputs[i].ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("outputs" + "." + strconv.Itoa(i)) + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("outputs" + "." + strconv.Itoa(i)) } return err } diff --git a/pkg/client-sdk/rest/service/models/v1_claim_payment_response.go b/pkg/client-sdk/client/rest/service/models/v1_claim_payment_response.go similarity index 99% rename from pkg/client-sdk/rest/service/models/v1_claim_payment_response.go rename to pkg/client-sdk/client/rest/service/models/v1_claim_payment_response.go index db84bfd..ffe306b 100644 --- a/pkg/client-sdk/rest/service/models/v1_claim_payment_response.go +++ b/pkg/client-sdk/client/rest/service/models/v1_claim_payment_response.go @@ -6,5 +6,6 @@ package models // Editing this file might prove futile when you re-run the swagger generate command // V1ClaimPaymentResponse v1 claim payment response +// // swagger:model v1ClaimPaymentResponse type V1ClaimPaymentResponse interface{} diff --git a/pkg/client-sdk/rest/service/models/v1_finalize_payment_request.go b/pkg/client-sdk/client/rest/service/models/v1_finalize_payment_request.go similarity index 80% rename from pkg/client-sdk/rest/service/models/v1_finalize_payment_request.go rename to pkg/client-sdk/client/rest/service/models/v1_finalize_payment_request.go index 11994f5..f7bbb17 100644 --- a/pkg/client-sdk/rest/service/models/v1_finalize_payment_request.go +++ b/pkg/client-sdk/client/rest/service/models/v1_finalize_payment_request.go @@ -6,12 +6,14 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( - strfmt "github.com/go-openapi/strfmt" + "context" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // V1FinalizePaymentRequest v1 finalize payment request +// // swagger:model v1FinalizePaymentRequest type V1FinalizePaymentRequest struct { @@ -24,6 +26,11 @@ func (m *V1FinalizePaymentRequest) Validate(formats strfmt.Registry) error { return nil } +// ContextValidate validates this v1 finalize payment request based on context it is used +func (m *V1FinalizePaymentRequest) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + // MarshalBinary interface implementation func (m *V1FinalizePaymentRequest) MarshalBinary() ([]byte, error) { if m == nil { diff --git a/pkg/client-sdk/rest/service/models/v1_finalize_payment_response.go b/pkg/client-sdk/client/rest/service/models/v1_finalize_payment_response.go similarity index 99% rename from pkg/client-sdk/rest/service/models/v1_finalize_payment_response.go rename to pkg/client-sdk/client/rest/service/models/v1_finalize_payment_response.go index cabb12b..f5083ff 100644 --- a/pkg/client-sdk/rest/service/models/v1_finalize_payment_response.go +++ b/pkg/client-sdk/client/rest/service/models/v1_finalize_payment_response.go @@ -6,5 +6,6 @@ package models // Editing this file might prove futile when you re-run the swagger generate command // V1FinalizePaymentResponse v1 finalize payment response +// // swagger:model v1FinalizePaymentResponse type V1FinalizePaymentResponse interface{} diff --git a/pkg/client-sdk/rest/service/models/v1_get_event_stream_response.go b/pkg/client-sdk/client/rest/service/models/v1_get_event_stream_response.go similarity index 52% rename from pkg/client-sdk/rest/service/models/v1_get_event_stream_response.go rename to pkg/client-sdk/client/rest/service/models/v1_get_event_stream_response.go index 738ec18..887bae1 100644 --- a/pkg/client-sdk/rest/service/models/v1_get_event_stream_response.go +++ b/pkg/client-sdk/client/rest/service/models/v1_get_event_stream_response.go @@ -6,13 +6,15 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( - strfmt "github.com/go-openapi/strfmt" + "context" "github.com/go-openapi/errors" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // V1GetEventStreamResponse v1 get event stream response +// // swagger:model v1GetEventStreamResponse type V1GetEventStreamResponse struct { @@ -49,7 +51,6 @@ func (m *V1GetEventStreamResponse) Validate(formats strfmt.Registry) error { } func (m *V1GetEventStreamResponse) validateRoundFailed(formats strfmt.Registry) error { - if swag.IsZero(m.RoundFailed) { // not required return nil } @@ -58,6 +59,8 @@ func (m *V1GetEventStreamResponse) validateRoundFailed(formats strfmt.Registry) if err := m.RoundFailed.Validate(formats); err != nil { if ve, ok := err.(*errors.Validation); ok { return ve.ValidateName("roundFailed") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("roundFailed") } return err } @@ -67,7 +70,6 @@ func (m *V1GetEventStreamResponse) validateRoundFailed(formats strfmt.Registry) } func (m *V1GetEventStreamResponse) validateRoundFinalization(formats strfmt.Registry) error { - if swag.IsZero(m.RoundFinalization) { // not required return nil } @@ -76,6 +78,8 @@ func (m *V1GetEventStreamResponse) validateRoundFinalization(formats strfmt.Regi if err := m.RoundFinalization.Validate(formats); err != nil { if ve, ok := err.(*errors.Validation); ok { return ve.ValidateName("roundFinalization") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("roundFinalization") } return err } @@ -85,7 +89,6 @@ func (m *V1GetEventStreamResponse) validateRoundFinalization(formats strfmt.Regi } func (m *V1GetEventStreamResponse) validateRoundFinalized(formats strfmt.Registry) error { - if swag.IsZero(m.RoundFinalized) { // not required return nil } @@ -94,6 +97,93 @@ func (m *V1GetEventStreamResponse) validateRoundFinalized(formats strfmt.Registr if err := m.RoundFinalized.Validate(formats); err != nil { if ve, ok := err.(*errors.Validation); ok { return ve.ValidateName("roundFinalized") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("roundFinalized") + } + return err + } + } + + return nil +} + +// ContextValidate validate this v1 get event stream response based on the context it is used +func (m *V1GetEventStreamResponse) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := m.contextValidateRoundFailed(ctx, formats); err != nil { + res = append(res, err) + } + + if err := m.contextValidateRoundFinalization(ctx, formats); err != nil { + res = append(res, err) + } + + if err := m.contextValidateRoundFinalized(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (m *V1GetEventStreamResponse) contextValidateRoundFailed(ctx context.Context, formats strfmt.Registry) error { + + if m.RoundFailed != nil { + + if swag.IsZero(m.RoundFailed) { // not required + return nil + } + + if err := m.RoundFailed.ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("roundFailed") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("roundFailed") + } + return err + } + } + + return nil +} + +func (m *V1GetEventStreamResponse) contextValidateRoundFinalization(ctx context.Context, formats strfmt.Registry) error { + + if m.RoundFinalization != nil { + + if swag.IsZero(m.RoundFinalization) { // not required + return nil + } + + if err := m.RoundFinalization.ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("roundFinalization") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("roundFinalization") + } + return err + } + } + + return nil +} + +func (m *V1GetEventStreamResponse) contextValidateRoundFinalized(ctx context.Context, formats strfmt.Registry) error { + + if m.RoundFinalized != nil { + + if swag.IsZero(m.RoundFinalized) { // not required + return nil + } + + if err := m.RoundFinalized.ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("roundFinalized") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("roundFinalized") } return err } diff --git a/pkg/client-sdk/rest/service/models/v1_get_info_response.go b/pkg/client-sdk/client/rest/service/models/v1_get_info_response.go similarity index 84% rename from pkg/client-sdk/rest/service/models/v1_get_info_response.go rename to pkg/client-sdk/client/rest/service/models/v1_get_info_response.go index 6350e38..5395dff 100644 --- a/pkg/client-sdk/rest/service/models/v1_get_info_response.go +++ b/pkg/client-sdk/client/rest/service/models/v1_get_info_response.go @@ -6,12 +6,14 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( - strfmt "github.com/go-openapi/strfmt" + "context" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // V1GetInfoResponse v1 get info response +// // swagger:model v1GetInfoResponse type V1GetInfoResponse struct { @@ -39,6 +41,11 @@ func (m *V1GetInfoResponse) Validate(formats strfmt.Registry) error { return nil } +// ContextValidate validates this v1 get info response based on context it is used +func (m *V1GetInfoResponse) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + // MarshalBinary interface implementation func (m *V1GetInfoResponse) MarshalBinary() ([]byte, error) { if m == nil { diff --git a/pkg/client-sdk/rest/service/models/v1_get_round_by_id_response.go b/pkg/client-sdk/client/rest/service/models/v1_get_round_by_id_response.go similarity index 60% rename from pkg/client-sdk/rest/service/models/v1_get_round_by_id_response.go rename to pkg/client-sdk/client/rest/service/models/v1_get_round_by_id_response.go index 0ac20a9..1f1a8c5 100644 --- a/pkg/client-sdk/rest/service/models/v1_get_round_by_id_response.go +++ b/pkg/client-sdk/client/rest/service/models/v1_get_round_by_id_response.go @@ -6,13 +6,15 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( - strfmt "github.com/go-openapi/strfmt" + "context" "github.com/go-openapi/errors" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // V1GetRoundByIDResponse v1 get round by Id response +// // swagger:model v1GetRoundByIdResponse type V1GetRoundByIDResponse struct { @@ -35,7 +37,6 @@ func (m *V1GetRoundByIDResponse) Validate(formats strfmt.Registry) error { } func (m *V1GetRoundByIDResponse) validateRound(formats strfmt.Registry) error { - if swag.IsZero(m.Round) { // not required return nil } @@ -44,6 +45,43 @@ func (m *V1GetRoundByIDResponse) validateRound(formats strfmt.Registry) error { if err := m.Round.Validate(formats); err != nil { if ve, ok := err.(*errors.Validation); ok { return ve.ValidateName("round") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("round") + } + return err + } + } + + return nil +} + +// ContextValidate validate this v1 get round by Id response based on the context it is used +func (m *V1GetRoundByIDResponse) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := m.contextValidateRound(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (m *V1GetRoundByIDResponse) contextValidateRound(ctx context.Context, formats strfmt.Registry) error { + + if m.Round != nil { + + if swag.IsZero(m.Round) { // not required + return nil + } + + if err := m.Round.ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("round") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("round") } return err } diff --git a/pkg/client-sdk/rest/service/models/v1_get_round_response.go b/pkg/client-sdk/client/rest/service/models/v1_get_round_response.go similarity index 59% rename from pkg/client-sdk/rest/service/models/v1_get_round_response.go rename to pkg/client-sdk/client/rest/service/models/v1_get_round_response.go index 6626e46..ecf8a81 100644 --- a/pkg/client-sdk/rest/service/models/v1_get_round_response.go +++ b/pkg/client-sdk/client/rest/service/models/v1_get_round_response.go @@ -6,13 +6,15 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( - strfmt "github.com/go-openapi/strfmt" + "context" "github.com/go-openapi/errors" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // V1GetRoundResponse v1 get round response +// // swagger:model v1GetRoundResponse type V1GetRoundResponse struct { @@ -35,7 +37,6 @@ func (m *V1GetRoundResponse) Validate(formats strfmt.Registry) error { } func (m *V1GetRoundResponse) validateRound(formats strfmt.Registry) error { - if swag.IsZero(m.Round) { // not required return nil } @@ -44,6 +45,43 @@ func (m *V1GetRoundResponse) validateRound(formats strfmt.Registry) error { if err := m.Round.Validate(formats); err != nil { if ve, ok := err.(*errors.Validation); ok { return ve.ValidateName("round") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("round") + } + return err + } + } + + return nil +} + +// ContextValidate validate this v1 get round response based on the context it is used +func (m *V1GetRoundResponse) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := m.contextValidateRound(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (m *V1GetRoundResponse) contextValidateRound(ctx context.Context, formats strfmt.Registry) error { + + if m.Round != nil { + + if swag.IsZero(m.Round) { // not required + return nil + } + + if err := m.Round.ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("round") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("round") } return err } diff --git a/pkg/client-sdk/rest/service/models/v1_input.go b/pkg/client-sdk/client/rest/service/models/v1_input.go similarity index 79% rename from pkg/client-sdk/rest/service/models/v1_input.go rename to pkg/client-sdk/client/rest/service/models/v1_input.go index 124f709..3fba81a 100644 --- a/pkg/client-sdk/rest/service/models/v1_input.go +++ b/pkg/client-sdk/client/rest/service/models/v1_input.go @@ -6,12 +6,14 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( - strfmt "github.com/go-openapi/strfmt" + "context" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // V1Input v1 input +// // swagger:model v1Input type V1Input struct { @@ -27,6 +29,11 @@ func (m *V1Input) Validate(formats strfmt.Registry) error { return nil } +// ContextValidate validates this v1 input based on context it is used +func (m *V1Input) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + // MarshalBinary interface implementation func (m *V1Input) MarshalBinary() ([]byte, error) { if m == nil { diff --git a/pkg/client-sdk/rest/service/models/v1_list_vtxos_response.go b/pkg/client-sdk/client/rest/service/models/v1_list_vtxos_response.go similarity index 53% rename from pkg/client-sdk/rest/service/models/v1_list_vtxos_response.go rename to pkg/client-sdk/client/rest/service/models/v1_list_vtxos_response.go index 6746c0c..fed6699 100644 --- a/pkg/client-sdk/rest/service/models/v1_list_vtxos_response.go +++ b/pkg/client-sdk/client/rest/service/models/v1_list_vtxos_response.go @@ -6,15 +6,16 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( + "context" "strconv" - strfmt "github.com/go-openapi/strfmt" - "github.com/go-openapi/errors" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // V1ListVtxosResponse v1 list vtxos response +// // swagger:model v1ListVtxosResponse type V1ListVtxosResponse struct { @@ -44,7 +45,6 @@ func (m *V1ListVtxosResponse) Validate(formats strfmt.Registry) error { } func (m *V1ListVtxosResponse) validateSpendableVtxos(formats strfmt.Registry) error { - if swag.IsZero(m.SpendableVtxos) { // not required return nil } @@ -58,6 +58,8 @@ func (m *V1ListVtxosResponse) validateSpendableVtxos(formats strfmt.Registry) er if err := m.SpendableVtxos[i].Validate(formats); err != nil { if ve, ok := err.(*errors.Validation); ok { return ve.ValidateName("spendableVtxos" + "." + strconv.Itoa(i)) + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("spendableVtxos" + "." + strconv.Itoa(i)) } return err } @@ -69,7 +71,6 @@ func (m *V1ListVtxosResponse) validateSpendableVtxos(formats strfmt.Registry) er } func (m *V1ListVtxosResponse) validateSpentVtxos(formats strfmt.Registry) error { - if swag.IsZero(m.SpentVtxos) { // not required return nil } @@ -83,6 +84,76 @@ func (m *V1ListVtxosResponse) validateSpentVtxos(formats strfmt.Registry) error if err := m.SpentVtxos[i].Validate(formats); err != nil { if ve, ok := err.(*errors.Validation); ok { return ve.ValidateName("spentVtxos" + "." + strconv.Itoa(i)) + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("spentVtxos" + "." + strconv.Itoa(i)) + } + return err + } + } + + } + + return nil +} + +// ContextValidate validate this v1 list vtxos response based on the context it is used +func (m *V1ListVtxosResponse) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := m.contextValidateSpendableVtxos(ctx, formats); err != nil { + res = append(res, err) + } + + if err := m.contextValidateSpentVtxos(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (m *V1ListVtxosResponse) contextValidateSpendableVtxos(ctx context.Context, formats strfmt.Registry) error { + + for i := 0; i < len(m.SpendableVtxos); i++ { + + if m.SpendableVtxos[i] != nil { + + if swag.IsZero(m.SpendableVtxos[i]) { // not required + return nil + } + + if err := m.SpendableVtxos[i].ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("spendableVtxos" + "." + strconv.Itoa(i)) + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("spendableVtxos" + "." + strconv.Itoa(i)) + } + return err + } + } + + } + + return nil +} + +func (m *V1ListVtxosResponse) contextValidateSpentVtxos(ctx context.Context, formats strfmt.Registry) error { + + for i := 0; i < len(m.SpentVtxos); i++ { + + if m.SpentVtxos[i] != nil { + + if swag.IsZero(m.SpentVtxos[i]) { // not required + return nil + } + + if err := m.SpentVtxos[i].ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("spentVtxos" + "." + strconv.Itoa(i)) + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("spentVtxos" + "." + strconv.Itoa(i)) } return err } diff --git a/pkg/client-sdk/rest/service/models/v1_node.go b/pkg/client-sdk/client/rest/service/models/v1_node.go similarity index 80% rename from pkg/client-sdk/rest/service/models/v1_node.go rename to pkg/client-sdk/client/rest/service/models/v1_node.go index 34109f7..8fc3e89 100644 --- a/pkg/client-sdk/rest/service/models/v1_node.go +++ b/pkg/client-sdk/client/rest/service/models/v1_node.go @@ -6,12 +6,14 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( - strfmt "github.com/go-openapi/strfmt" + "context" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // V1Node v1 node +// // swagger:model v1Node type V1Node struct { @@ -30,6 +32,11 @@ func (m *V1Node) Validate(formats strfmt.Registry) error { return nil } +// ContextValidate validates this v1 node based on context it is used +func (m *V1Node) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + // MarshalBinary interface implementation func (m *V1Node) MarshalBinary() ([]byte, error) { if m == nil { diff --git a/pkg/client-sdk/rest/service/models/v1_onboard_request.go b/pkg/client-sdk/client/rest/service/models/v1_onboard_request.go similarity index 61% rename from pkg/client-sdk/rest/service/models/v1_onboard_request.go rename to pkg/client-sdk/client/rest/service/models/v1_onboard_request.go index 667d16b..a242776 100644 --- a/pkg/client-sdk/rest/service/models/v1_onboard_request.go +++ b/pkg/client-sdk/client/rest/service/models/v1_onboard_request.go @@ -6,13 +6,15 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( - strfmt "github.com/go-openapi/strfmt" + "context" "github.com/go-openapi/errors" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // V1OnboardRequest v1 onboard request +// // swagger:model v1OnboardRequest type V1OnboardRequest struct { @@ -41,7 +43,6 @@ func (m *V1OnboardRequest) Validate(formats strfmt.Registry) error { } func (m *V1OnboardRequest) validateCongestionTree(formats strfmt.Registry) error { - if swag.IsZero(m.CongestionTree) { // not required return nil } @@ -50,6 +51,43 @@ func (m *V1OnboardRequest) validateCongestionTree(formats strfmt.Registry) error if err := m.CongestionTree.Validate(formats); err != nil { if ve, ok := err.(*errors.Validation); ok { return ve.ValidateName("congestionTree") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("congestionTree") + } + return err + } + } + + return nil +} + +// ContextValidate validate this v1 onboard request based on the context it is used +func (m *V1OnboardRequest) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := m.contextValidateCongestionTree(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (m *V1OnboardRequest) contextValidateCongestionTree(ctx context.Context, formats strfmt.Registry) error { + + if m.CongestionTree != nil { + + if swag.IsZero(m.CongestionTree) { // not required + return nil + } + + if err := m.CongestionTree.ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("congestionTree") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("congestionTree") } return err } diff --git a/pkg/client-sdk/rest/service/models/v1_onboard_response.go b/pkg/client-sdk/client/rest/service/models/v1_onboard_response.go similarity index 99% rename from pkg/client-sdk/rest/service/models/v1_onboard_response.go rename to pkg/client-sdk/client/rest/service/models/v1_onboard_response.go index 0be37fa..470dedb 100644 --- a/pkg/client-sdk/rest/service/models/v1_onboard_response.go +++ b/pkg/client-sdk/client/rest/service/models/v1_onboard_response.go @@ -6,5 +6,6 @@ package models // Editing this file might prove futile when you re-run the swagger generate command // V1OnboardResponse v1 onboard response +// // swagger:model v1OnboardResponse type V1OnboardResponse interface{} diff --git a/pkg/client-sdk/rest/service/models/v1_output.go b/pkg/client-sdk/client/rest/service/models/v1_output.go similarity index 81% rename from pkg/client-sdk/rest/service/models/v1_output.go rename to pkg/client-sdk/client/rest/service/models/v1_output.go index f14ae69..0882b64 100644 --- a/pkg/client-sdk/rest/service/models/v1_output.go +++ b/pkg/client-sdk/client/rest/service/models/v1_output.go @@ -6,12 +6,14 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( - strfmt "github.com/go-openapi/strfmt" + "context" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // V1Output v1 output +// // swagger:model v1Output type V1Output struct { @@ -27,6 +29,11 @@ func (m *V1Output) Validate(formats strfmt.Registry) error { return nil } +// ContextValidate validates this v1 output based on context it is used +func (m *V1Output) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + // MarshalBinary interface implementation func (m *V1Output) MarshalBinary() ([]byte, error) { if m == nil { diff --git a/pkg/client-sdk/rest/service/models/v1_ping_response.go b/pkg/client-sdk/client/rest/service/models/v1_ping_response.go similarity index 60% rename from pkg/client-sdk/rest/service/models/v1_ping_response.go rename to pkg/client-sdk/client/rest/service/models/v1_ping_response.go index d2a8bc7..ea37603 100644 --- a/pkg/client-sdk/rest/service/models/v1_ping_response.go +++ b/pkg/client-sdk/client/rest/service/models/v1_ping_response.go @@ -6,13 +6,15 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( - strfmt "github.com/go-openapi/strfmt" + "context" "github.com/go-openapi/errors" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // V1PingResponse v1 ping response +// // swagger:model v1PingResponse type V1PingResponse struct { @@ -38,7 +40,6 @@ func (m *V1PingResponse) Validate(formats strfmt.Registry) error { } func (m *V1PingResponse) validateEvent(formats strfmt.Registry) error { - if swag.IsZero(m.Event) { // not required return nil } @@ -47,6 +48,43 @@ func (m *V1PingResponse) validateEvent(formats strfmt.Registry) error { if err := m.Event.Validate(formats); err != nil { if ve, ok := err.(*errors.Validation); ok { return ve.ValidateName("event") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("event") + } + return err + } + } + + return nil +} + +// ContextValidate validate this v1 ping response based on the context it is used +func (m *V1PingResponse) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := m.contextValidateEvent(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (m *V1PingResponse) contextValidateEvent(ctx context.Context, formats strfmt.Registry) error { + + if m.Event != nil { + + if swag.IsZero(m.Event) { // not required + return nil + } + + if err := m.Event.ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("event") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("event") } return err } diff --git a/pkg/client-sdk/rest/service/models/v1_register_payment_request.go b/pkg/client-sdk/client/rest/service/models/v1_register_payment_request.go similarity index 59% rename from pkg/client-sdk/rest/service/models/v1_register_payment_request.go rename to pkg/client-sdk/client/rest/service/models/v1_register_payment_request.go index 9a5fa65..ed252a8 100644 --- a/pkg/client-sdk/rest/service/models/v1_register_payment_request.go +++ b/pkg/client-sdk/client/rest/service/models/v1_register_payment_request.go @@ -6,15 +6,16 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( + "context" "strconv" - strfmt "github.com/go-openapi/strfmt" - "github.com/go-openapi/errors" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // V1RegisterPaymentRequest v1 register payment request +// // swagger:model v1RegisterPaymentRequest type V1RegisterPaymentRequest struct { @@ -37,7 +38,6 @@ func (m *V1RegisterPaymentRequest) Validate(formats strfmt.Registry) error { } func (m *V1RegisterPaymentRequest) validateInputs(formats strfmt.Registry) error { - if swag.IsZero(m.Inputs) { // not required return nil } @@ -51,6 +51,47 @@ func (m *V1RegisterPaymentRequest) validateInputs(formats strfmt.Registry) error if err := m.Inputs[i].Validate(formats); err != nil { if ve, ok := err.(*errors.Validation); ok { return ve.ValidateName("inputs" + "." + strconv.Itoa(i)) + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("inputs" + "." + strconv.Itoa(i)) + } + return err + } + } + + } + + return nil +} + +// ContextValidate validate this v1 register payment request based on the context it is used +func (m *V1RegisterPaymentRequest) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := m.contextValidateInputs(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (m *V1RegisterPaymentRequest) contextValidateInputs(ctx context.Context, formats strfmt.Registry) error { + + for i := 0; i < len(m.Inputs); i++ { + + if m.Inputs[i] != nil { + + if swag.IsZero(m.Inputs[i]) { // not required + return nil + } + + if err := m.Inputs[i].ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("inputs" + "." + strconv.Itoa(i)) + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("inputs" + "." + strconv.Itoa(i)) } return err } diff --git a/pkg/client-sdk/rest/service/models/v1_register_payment_response.go b/pkg/client-sdk/client/rest/service/models/v1_register_payment_response.go similarity index 79% rename from pkg/client-sdk/rest/service/models/v1_register_payment_response.go rename to pkg/client-sdk/client/rest/service/models/v1_register_payment_response.go index edee8ac..15340c3 100644 --- a/pkg/client-sdk/rest/service/models/v1_register_payment_response.go +++ b/pkg/client-sdk/client/rest/service/models/v1_register_payment_response.go @@ -6,12 +6,14 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( - strfmt "github.com/go-openapi/strfmt" + "context" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // V1RegisterPaymentResponse v1 register payment response +// // swagger:model v1RegisterPaymentResponse type V1RegisterPaymentResponse struct { @@ -24,6 +26,11 @@ func (m *V1RegisterPaymentResponse) Validate(formats strfmt.Registry) error { return nil } +// ContextValidate validates this v1 register payment response based on context it is used +func (m *V1RegisterPaymentResponse) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + // MarshalBinary interface implementation func (m *V1RegisterPaymentResponse) MarshalBinary() ([]byte, error) { if m == nil { diff --git a/pkg/client-sdk/rest/service/models/v1_round.go b/pkg/client-sdk/client/rest/service/models/v1_round.go similarity index 51% rename from pkg/client-sdk/rest/service/models/v1_round.go rename to pkg/client-sdk/client/rest/service/models/v1_round.go index bf18e0a..88e8a12 100644 --- a/pkg/client-sdk/rest/service/models/v1_round.go +++ b/pkg/client-sdk/client/rest/service/models/v1_round.go @@ -6,13 +6,15 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( - strfmt "github.com/go-openapi/strfmt" + "context" "github.com/go-openapi/errors" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // V1Round v1 round +// // swagger:model v1Round type V1Round struct { @@ -35,7 +37,7 @@ type V1Round struct { PoolTx string `json:"poolTx,omitempty"` // stage - Stage V1RoundStage `json:"stage,omitempty"` + Stage *V1RoundStage `json:"stage,omitempty"` // start Start string `json:"start,omitempty"` @@ -60,7 +62,6 @@ func (m *V1Round) Validate(formats strfmt.Registry) error { } func (m *V1Round) validateCongestionTree(formats strfmt.Registry) error { - if swag.IsZero(m.CongestionTree) { // not required return nil } @@ -69,6 +70,8 @@ func (m *V1Round) validateCongestionTree(formats strfmt.Registry) error { if err := m.CongestionTree.Validate(formats); err != nil { if ve, ok := err.(*errors.Validation); ok { return ve.ValidateName("congestionTree") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("congestionTree") } return err } @@ -78,16 +81,79 @@ func (m *V1Round) validateCongestionTree(formats strfmt.Registry) error { } func (m *V1Round) validateStage(formats strfmt.Registry) error { - if swag.IsZero(m.Stage) { // not required return nil } - if err := m.Stage.Validate(formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("stage") + if m.Stage != nil { + if err := m.Stage.Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("stage") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("stage") + } + return err + } + } + + return nil +} + +// ContextValidate validate this v1 round based on the context it is used +func (m *V1Round) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := m.contextValidateCongestionTree(ctx, formats); err != nil { + res = append(res, err) + } + + if err := m.contextValidateStage(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (m *V1Round) contextValidateCongestionTree(ctx context.Context, formats strfmt.Registry) error { + + if m.CongestionTree != nil { + + if swag.IsZero(m.CongestionTree) { // not required + return nil + } + + if err := m.CongestionTree.ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("congestionTree") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("congestionTree") + } + return err + } + } + + return nil +} + +func (m *V1Round) contextValidateStage(ctx context.Context, formats strfmt.Registry) error { + + if m.Stage != nil { + + if swag.IsZero(m.Stage) { // not required + return nil + } + + if err := m.Stage.ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("stage") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("stage") + } + return err } - return err } return nil diff --git a/pkg/client-sdk/rest/service/models/v1_round_failed.go b/pkg/client-sdk/client/rest/service/models/v1_round_failed.go similarity index 79% rename from pkg/client-sdk/rest/service/models/v1_round_failed.go rename to pkg/client-sdk/client/rest/service/models/v1_round_failed.go index a3a4b5f..0eb246c 100644 --- a/pkg/client-sdk/rest/service/models/v1_round_failed.go +++ b/pkg/client-sdk/client/rest/service/models/v1_round_failed.go @@ -6,12 +6,14 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( - strfmt "github.com/go-openapi/strfmt" + "context" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // V1RoundFailed v1 round failed +// // swagger:model v1RoundFailed type V1RoundFailed struct { @@ -27,6 +29,11 @@ func (m *V1RoundFailed) Validate(formats strfmt.Registry) error { return nil } +// ContextValidate validates this v1 round failed based on context it is used +func (m *V1RoundFailed) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + // MarshalBinary interface implementation func (m *V1RoundFailed) MarshalBinary() ([]byte, error) { if m == nil { diff --git a/pkg/client-sdk/rest/service/models/v1_round_finalization_event.go b/pkg/client-sdk/client/rest/service/models/v1_round_finalization_event.go similarity index 62% rename from pkg/client-sdk/rest/service/models/v1_round_finalization_event.go rename to pkg/client-sdk/client/rest/service/models/v1_round_finalization_event.go index c0f1b38..d8f52c3 100644 --- a/pkg/client-sdk/rest/service/models/v1_round_finalization_event.go +++ b/pkg/client-sdk/client/rest/service/models/v1_round_finalization_event.go @@ -6,13 +6,15 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( - strfmt "github.com/go-openapi/strfmt" + "context" "github.com/go-openapi/errors" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // V1RoundFinalizationEvent v1 round finalization event +// // swagger:model v1RoundFinalizationEvent type V1RoundFinalizationEvent struct { @@ -47,7 +49,6 @@ func (m *V1RoundFinalizationEvent) Validate(formats strfmt.Registry) error { } func (m *V1RoundFinalizationEvent) validateCongestionTree(formats strfmt.Registry) error { - if swag.IsZero(m.CongestionTree) { // not required return nil } @@ -56,6 +57,43 @@ func (m *V1RoundFinalizationEvent) validateCongestionTree(formats strfmt.Registr if err := m.CongestionTree.Validate(formats); err != nil { if ve, ok := err.(*errors.Validation); ok { return ve.ValidateName("congestionTree") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("congestionTree") + } + return err + } + } + + return nil +} + +// ContextValidate validate this v1 round finalization event based on the context it is used +func (m *V1RoundFinalizationEvent) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := m.contextValidateCongestionTree(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (m *V1RoundFinalizationEvent) contextValidateCongestionTree(ctx context.Context, formats strfmt.Registry) error { + + if m.CongestionTree != nil { + + if swag.IsZero(m.CongestionTree) { // not required + return nil + } + + if err := m.CongestionTree.ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("congestionTree") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("congestionTree") } return err } diff --git a/pkg/client-sdk/rest/service/models/v1_round_finalized_event.go b/pkg/client-sdk/client/rest/service/models/v1_round_finalized_event.go similarity index 80% rename from pkg/client-sdk/rest/service/models/v1_round_finalized_event.go rename to pkg/client-sdk/client/rest/service/models/v1_round_finalized_event.go index 019e5bc..8cd89b9 100644 --- a/pkg/client-sdk/rest/service/models/v1_round_finalized_event.go +++ b/pkg/client-sdk/client/rest/service/models/v1_round_finalized_event.go @@ -6,12 +6,14 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( - strfmt "github.com/go-openapi/strfmt" + "context" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // V1RoundFinalizedEvent v1 round finalized event +// // swagger:model v1RoundFinalizedEvent type V1RoundFinalizedEvent struct { @@ -27,6 +29,11 @@ func (m *V1RoundFinalizedEvent) Validate(formats strfmt.Registry) error { return nil } +// ContextValidate validates this v1 round finalized event based on context it is used +func (m *V1RoundFinalizedEvent) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + // MarshalBinary interface implementation func (m *V1RoundFinalizedEvent) MarshalBinary() ([]byte, error) { if m == nil { diff --git a/pkg/client-sdk/rest/service/models/v1_round_stage.go b/pkg/client-sdk/client/rest/service/models/v1_round_stage.go similarity index 79% rename from pkg/client-sdk/rest/service/models/v1_round_stage.go rename to pkg/client-sdk/client/rest/service/models/v1_round_stage.go index fe5e172..e338b41 100644 --- a/pkg/client-sdk/rest/service/models/v1_round_stage.go +++ b/pkg/client-sdk/client/rest/service/models/v1_round_stage.go @@ -6,18 +6,28 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( + "context" "encoding/json" - strfmt "github.com/go-openapi/strfmt" - "github.com/go-openapi/errors" + "github.com/go-openapi/strfmt" "github.com/go-openapi/validate" ) // V1RoundStage v1 round stage +// // swagger:model v1RoundStage type V1RoundStage string +func NewV1RoundStage(value V1RoundStage) *V1RoundStage { + return &value +} + +// Pointer returns a pointer to a freshly-allocated V1RoundStage. +func (m V1RoundStage) Pointer() *V1RoundStage { + return &m +} + const ( // V1RoundStageROUNDSTAGEUNSPECIFIED captures enum value "ROUND_STAGE_UNSPECIFIED" @@ -50,7 +60,7 @@ func init() { } func (m V1RoundStage) validateV1RoundStageEnum(path, location string, value V1RoundStage) error { - if err := validate.Enum(path, location, value, v1RoundStageEnum); err != nil { + if err := validate.EnumCase(path, location, value, v1RoundStageEnum, true); err != nil { return err } return nil @@ -70,3 +80,8 @@ func (m V1RoundStage) Validate(formats strfmt.Registry) error { } return nil } + +// ContextValidate validates this v1 round stage based on context it is used +func (m V1RoundStage) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} diff --git a/pkg/client-sdk/rest/service/models/v1_tree.go b/pkg/client-sdk/client/rest/service/models/v1_tree.go similarity index 57% rename from pkg/client-sdk/rest/service/models/v1_tree.go rename to pkg/client-sdk/client/rest/service/models/v1_tree.go index 003f2a5..e825f1f 100644 --- a/pkg/client-sdk/rest/service/models/v1_tree.go +++ b/pkg/client-sdk/client/rest/service/models/v1_tree.go @@ -6,15 +6,16 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( + "context" "strconv" - strfmt "github.com/go-openapi/strfmt" - "github.com/go-openapi/errors" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // V1Tree v1 tree +// // swagger:model v1Tree type V1Tree struct { @@ -37,7 +38,6 @@ func (m *V1Tree) Validate(formats strfmt.Registry) error { } func (m *V1Tree) validateLevels(formats strfmt.Registry) error { - if swag.IsZero(m.Levels) { // not required return nil } @@ -51,6 +51,47 @@ func (m *V1Tree) validateLevels(formats strfmt.Registry) error { if err := m.Levels[i].Validate(formats); err != nil { if ve, ok := err.(*errors.Validation); ok { return ve.ValidateName("levels" + "." + strconv.Itoa(i)) + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("levels" + "." + strconv.Itoa(i)) + } + return err + } + } + + } + + return nil +} + +// ContextValidate validate this v1 tree based on the context it is used +func (m *V1Tree) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := m.contextValidateLevels(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (m *V1Tree) contextValidateLevels(ctx context.Context, formats strfmt.Registry) error { + + for i := 0; i < len(m.Levels); i++ { + + if m.Levels[i] != nil { + + if swag.IsZero(m.Levels[i]) { // not required + return nil + } + + if err := m.Levels[i].ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("levels" + "." + strconv.Itoa(i)) + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("levels" + "." + strconv.Itoa(i)) } return err } diff --git a/pkg/client-sdk/rest/service/models/v1_tree_level.go b/pkg/client-sdk/client/rest/service/models/v1_tree_level.go similarity index 58% rename from pkg/client-sdk/rest/service/models/v1_tree_level.go rename to pkg/client-sdk/client/rest/service/models/v1_tree_level.go index 73c0df2..c11c0a4 100644 --- a/pkg/client-sdk/rest/service/models/v1_tree_level.go +++ b/pkg/client-sdk/client/rest/service/models/v1_tree_level.go @@ -6,15 +6,16 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( + "context" "strconv" - strfmt "github.com/go-openapi/strfmt" - "github.com/go-openapi/errors" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // V1TreeLevel v1 tree level +// // swagger:model v1TreeLevel type V1TreeLevel struct { @@ -37,7 +38,6 @@ func (m *V1TreeLevel) Validate(formats strfmt.Registry) error { } func (m *V1TreeLevel) validateNodes(formats strfmt.Registry) error { - if swag.IsZero(m.Nodes) { // not required return nil } @@ -51,6 +51,47 @@ func (m *V1TreeLevel) validateNodes(formats strfmt.Registry) error { if err := m.Nodes[i].Validate(formats); err != nil { if ve, ok := err.(*errors.Validation); ok { return ve.ValidateName("nodes" + "." + strconv.Itoa(i)) + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("nodes" + "." + strconv.Itoa(i)) + } + return err + } + } + + } + + return nil +} + +// ContextValidate validate this v1 tree level based on the context it is used +func (m *V1TreeLevel) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := m.contextValidateNodes(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (m *V1TreeLevel) contextValidateNodes(ctx context.Context, formats strfmt.Registry) error { + + for i := 0; i < len(m.Nodes); i++ { + + if m.Nodes[i] != nil { + + if swag.IsZero(m.Nodes[i]) { // not required + return nil + } + + if err := m.Nodes[i].ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("nodes" + "." + strconv.Itoa(i)) + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("nodes" + "." + strconv.Itoa(i)) } return err } diff --git a/pkg/client-sdk/rest/service/models/v1_trusted_onboarding_request.go b/pkg/client-sdk/client/rest/service/models/v1_trusted_onboarding_request.go similarity index 79% rename from pkg/client-sdk/rest/service/models/v1_trusted_onboarding_request.go rename to pkg/client-sdk/client/rest/service/models/v1_trusted_onboarding_request.go index 1152dc5..6a6c673 100644 --- a/pkg/client-sdk/rest/service/models/v1_trusted_onboarding_request.go +++ b/pkg/client-sdk/client/rest/service/models/v1_trusted_onboarding_request.go @@ -6,12 +6,14 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( - strfmt "github.com/go-openapi/strfmt" + "context" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // V1TrustedOnboardingRequest v1 trusted onboarding request +// // swagger:model v1TrustedOnboardingRequest type V1TrustedOnboardingRequest struct { @@ -24,6 +26,11 @@ func (m *V1TrustedOnboardingRequest) Validate(formats strfmt.Registry) error { return nil } +// ContextValidate validates this v1 trusted onboarding request based on context it is used +func (m *V1TrustedOnboardingRequest) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + // MarshalBinary interface implementation func (m *V1TrustedOnboardingRequest) MarshalBinary() ([]byte, error) { if m == nil { diff --git a/pkg/client-sdk/rest/service/models/v1_trusted_onboarding_response.go b/pkg/client-sdk/client/rest/service/models/v1_trusted_onboarding_response.go similarity index 79% rename from pkg/client-sdk/rest/service/models/v1_trusted_onboarding_response.go rename to pkg/client-sdk/client/rest/service/models/v1_trusted_onboarding_response.go index f0c2e6f..f3cb790 100644 --- a/pkg/client-sdk/rest/service/models/v1_trusted_onboarding_response.go +++ b/pkg/client-sdk/client/rest/service/models/v1_trusted_onboarding_response.go @@ -6,12 +6,14 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( - strfmt "github.com/go-openapi/strfmt" + "context" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // V1TrustedOnboardingResponse v1 trusted onboarding response +// // swagger:model v1TrustedOnboardingResponse type V1TrustedOnboardingResponse struct { @@ -24,6 +26,11 @@ func (m *V1TrustedOnboardingResponse) Validate(formats strfmt.Registry) error { return nil } +// ContextValidate validates this v1 trusted onboarding response based on context it is used +func (m *V1TrustedOnboardingResponse) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + // MarshalBinary interface implementation func (m *V1TrustedOnboardingResponse) MarshalBinary() ([]byte, error) { if m == nil { diff --git a/pkg/client-sdk/rest/service/models/v1_vtxo.go b/pkg/client-sdk/client/rest/service/models/v1_vtxo.go similarity index 56% rename from pkg/client-sdk/rest/service/models/v1_vtxo.go rename to pkg/client-sdk/client/rest/service/models/v1_vtxo.go index 468cbc4..61c3996 100644 --- a/pkg/client-sdk/rest/service/models/v1_vtxo.go +++ b/pkg/client-sdk/client/rest/service/models/v1_vtxo.go @@ -6,13 +6,15 @@ package models // Editing this file might prove futile when you re-run the swagger generate command import ( - strfmt "github.com/go-openapi/strfmt" + "context" "github.com/go-openapi/errors" + "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" ) // V1Vtxo v1 vtxo +// // swagger:model v1Vtxo type V1Vtxo struct { @@ -57,7 +59,6 @@ func (m *V1Vtxo) Validate(formats strfmt.Registry) error { } func (m *V1Vtxo) validateOutpoint(formats strfmt.Registry) error { - if swag.IsZero(m.Outpoint) { // not required return nil } @@ -66,6 +67,8 @@ func (m *V1Vtxo) validateOutpoint(formats strfmt.Registry) error { if err := m.Outpoint.Validate(formats); err != nil { if ve, ok := err.(*errors.Validation); ok { return ve.ValidateName("outpoint") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("outpoint") } return err } @@ -75,7 +78,6 @@ func (m *V1Vtxo) validateOutpoint(formats strfmt.Registry) error { } func (m *V1Vtxo) validateReceiver(formats strfmt.Registry) error { - if swag.IsZero(m.Receiver) { // not required return nil } @@ -84,6 +86,68 @@ func (m *V1Vtxo) validateReceiver(formats strfmt.Registry) error { if err := m.Receiver.Validate(formats); err != nil { if ve, ok := err.(*errors.Validation); ok { return ve.ValidateName("receiver") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("receiver") + } + return err + } + } + + return nil +} + +// ContextValidate validate this v1 vtxo based on the context it is used +func (m *V1Vtxo) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := m.contextValidateOutpoint(ctx, formats); err != nil { + res = append(res, err) + } + + if err := m.contextValidateReceiver(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (m *V1Vtxo) contextValidateOutpoint(ctx context.Context, formats strfmt.Registry) error { + + if m.Outpoint != nil { + + if swag.IsZero(m.Outpoint) { // not required + return nil + } + + if err := m.Outpoint.ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("outpoint") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("outpoint") + } + return err + } + } + + return nil +} + +func (m *V1Vtxo) contextValidateReceiver(ctx context.Context, formats strfmt.Registry) error { + + if m.Receiver != nil { + + if swag.IsZero(m.Receiver) { // not required + return nil + } + + if err := m.Receiver.ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("receiver") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("receiver") } return err } diff --git a/pkg/client-sdk/common.go b/pkg/client-sdk/common.go deleted file mode 100644 index 38e9237..0000000 --- a/pkg/client-sdk/common.go +++ /dev/null @@ -1,296 +0,0 @@ -package arksdk - -import ( - "fmt" - "io" - "net/http" - "sort" - - arkv1 "github.com/ark-network/ark/api-spec/protobuf/gen/ark/v1" - "github.com/ark-network/ark/common" - "github.com/ark-network/ark/common/tree" - "github.com/decred/dcrd/dcrec/secp256k1/v4" - "github.com/vulpemventures/go-elements/address" - "github.com/vulpemventures/go-elements/network" - "github.com/vulpemventures/go-elements/payment" - "github.com/vulpemventures/go-elements/psetv2" - "github.com/vulpemventures/go-elements/taproot" -) - -func getAddress( - walletPubKey []byte, - aspPubKey []byte, - unilateralExitDelay int64, - net string, -) (offchainAddr, onchainAddr, redemptionAddr string, err error) { - userPubkey, err := secp256k1.ParsePubKey(walletPubKey) - if err != nil { - return - } - - aspPubkey, err := secp256k1.ParsePubKey(aspPubKey) - if err != nil { - return - } - - arkNet, liquidNet := networkFromString(net) - - arkAddr, err := common.EncodeAddress(arkNet.Addr, userPubkey, aspPubkey) - if err != nil { - return - } - - p2wpkh := payment.FromPublicKey(userPubkey, liquidNet, nil) - liquidAddr, err := p2wpkh.WitnessPubKeyHash() - if err != nil { - return - } - - vtxoTapKey, _, err := computeVtxoTaprootScript( - userPubkey, aspPubkey, uint(unilateralExitDelay), - ) - if err != nil { - return - } - - _, n := networkFromString(net) - - pay, err := payment.FromTweakedKey(vtxoTapKey, n, nil) - if err != nil { - return - } - - redemptionAddr, err = pay.TaprootAddress() - if err != nil { - return - } - - offchainAddr = arkAddr - onchainAddr = liquidAddr - - return -} - -func computeVtxoTaprootScript( - userPubkey, aspPubkey *secp256k1.PublicKey, exitDelay uint, -) (*secp256k1.PublicKey, *taproot.TapscriptElementsProof, error) { - redeemClosure := &tree.CSVSigClosure{ - Pubkey: userPubkey, - Seconds: exitDelay, - } - - forfeitClosure := &tree.ForfeitClosure{ - Pubkey: userPubkey, - AspPubkey: aspPubkey, - } - - redeemLeaf, err := redeemClosure.Leaf() - if err != nil { - return nil, nil, err - } - - forfeitLeaf, err := forfeitClosure.Leaf() - if err != nil { - return nil, nil, err - } - - vtxoTaprootTree := taproot.AssembleTaprootScriptTree( - *redeemLeaf, *forfeitLeaf, - ) - root := vtxoTaprootTree.RootNode.TapHash() - - unspendableKey := tree.UnspendableKey() - vtxoTaprootKey := taproot.ComputeTaprootOutputKey(unspendableKey, root[:]) - - redeemLeafHash := redeemLeaf.TapHash() - proofIndex := vtxoTaprootTree.LeafProofIndex[redeemLeafHash] - proof := vtxoTaprootTree.LeafMerkleProofs[proofIndex] - - return vtxoTaprootKey, &proof, nil -} - -func toCongestionTree(treeFromProto *arkv1.Tree) (tree.CongestionTree, error) { - levels := make(tree.CongestionTree, 0, len(treeFromProto.Levels)) - - for _, level := range treeFromProto.Levels { - nodes := make([]tree.Node, 0, len(level.Nodes)) - - for _, node := range level.Nodes { - nodes = append(nodes, tree.Node{ - Txid: node.Txid, - Tx: node.Tx, - ParentTxid: node.ParentTxid, - Leaf: false, - }) - } - - levels = append(levels, nodes) - } - - for j, treeLvl := range levels { - for i, node := range treeLvl { - if len(levels.Children(node.Txid)) == 0 { - levels[j][i].Leaf = true - } - } - } - - return levels, nil -} - -func networkFromString(net string) (*common.Network, *network.Network) { - if net == "testnet" { - return &common.TestNet, &network.Testnet - } - if net == "regtest" { - return &common.RegTest, &network.Regtest - } - return &common.Liquid, &network.Liquid -} - -func testEsploraEndpoint(net *network.Network, url string) error { - resp, err := http.Get(fmt.Sprintf("%s/asset/%s", url, net.AssetID)) - if err != nil { - return err - } - defer resp.Body.Close() - body, err := io.ReadAll(resp.Body) - if err != nil { - return err - } - if resp.StatusCode != http.StatusOK { - return fmt.Errorf(string(body)) - } - - return nil -} - -func castCongestionTree(congestionTree tree.CongestionTree) *arkv1.Tree { - levels := make([]*arkv1.TreeLevel, 0, len(congestionTree)) - for _, level := range congestionTree { - levelProto := &arkv1.TreeLevel{ - Nodes: make([]*arkv1.Node, 0, len(level)), - } - - for _, node := range level { - levelProto.Nodes = append(levelProto.Nodes, &arkv1.Node{ - Txid: node.Txid, - Tx: node.Tx, - ParentTxid: node.ParentTxid, - }) - } - - levels = append(levels, levelProto) - } - return &arkv1.Tree{ - Levels: levels, - } -} - -func coinSelect(vtxos []vtxo, amount uint64, sortByExpirationTime bool) ([]vtxo, uint64, error) { - selected := make([]vtxo, 0) - notSelected := make([]vtxo, 0) - selectedAmount := uint64(0) - - if sortByExpirationTime { - // sort vtxos by expiration (older first) - sort.SliceStable(vtxos, func(i, j int) bool { - if vtxos[i].expireAt == nil || vtxos[j].expireAt == nil { - return false - } - - return vtxos[i].expireAt.Before(*vtxos[j].expireAt) - }) - } - - for _, vtxo := range vtxos { - if selectedAmount >= amount { - notSelected = append(notSelected, vtxo) - break - } - - selected = append(selected, vtxo) - selectedAmount += vtxo.amount - } - - if selectedAmount < amount { - return nil, 0, fmt.Errorf("not enough funds to cover amount%d", amount) - } - - change := selectedAmount - amount - - if change < DUST { - if len(notSelected) > 0 { - selected = append(selected, notSelected[0]) - change += notSelected[0].amount - } - } - - return selected, change, nil -} - -func findSweepClosure( - congestionTree tree.CongestionTree, -) (*taproot.TapElementsLeaf, uint, error) { - root, err := congestionTree.Root() - if err != nil { - return nil, 0, err - } - - // find the sweep closure - tx, err := psetv2.NewPsetFromBase64(root.Tx) - if err != nil { - return nil, 0, err - } - - var seconds uint - var sweepClosure *taproot.TapElementsLeaf - for _, tapLeaf := range tx.Inputs[0].TapLeafScript { - closure := &tree.CSVSigClosure{} - valid, err := closure.Decode(tapLeaf.Script) - if err != nil { - continue - } - - if valid && closure.Seconds > seconds { - seconds = closure.Seconds - sweepClosure = &tapLeaf.TapElementsLeaf - } - } - - if sweepClosure == nil { - return nil, 0, fmt.Errorf("sweep closure not found") - } - - return sweepClosure, seconds, nil -} - -func decodeReceiverAddress(addr string) ( - bool, []byte, *secp256k1.PublicKey, error, -) { - outputScript, err := address.ToOutputScript(addr) - if err != nil { - _, userPubkey, _, err := common.DecodeAddress(addr) - if err != nil { - return false, nil, nil, err - } - return false, nil, userPubkey, nil - } - - return true, outputScript, nil, nil -} - -func isOnchainOnly(receivers []*arkv1.Output) bool { - for _, receiver := range receivers { - isOnChain, _, _, err := decodeReceiverAddress(receiver.Address) - if err != nil { - continue - } - - if !isOnChain { - return false - } - } - - return true -} diff --git a/pkg/client-sdk/event_stream_handler.go b/pkg/client-sdk/event_stream_handler.go index f775db6..bf94f52 100644 --- a/pkg/client-sdk/event_stream_handler.go +++ b/pkg/client-sdk/event_stream_handler.go @@ -5,6 +5,8 @@ import ( "context" "fmt" + "github.com/ark-network/ark-sdk/client" + "github.com/ark-network/ark-sdk/internal/utils" arkv1 "github.com/ark-network/ark/api-spec/protobuf/gen/ark/v1" "github.com/ark-network/ark/common" "github.com/ark-network/ark/common/tree" @@ -17,11 +19,9 @@ import ( func (a *arkClient) handleRoundStream( ctx context.Context, - paymentID string, - vtxosToSign []vtxo, - receivers []*arkv1.Output, + paymentID string, vtxosToSign []*client.Vtxo, receivers []*arkv1.Output, ) (string, error) { - eventStream, err := a.innerClient.getEventStream(ctx, paymentID, &arkv1.GetEventStreamRequest{}) + eventsCh, err := a.client.GetEventStream(ctx, paymentID, &arkv1.GetEventStreamRequest{}) if err != nil { return "", err } @@ -40,7 +40,12 @@ func (a *arkClient) handleRoundStream( select { case <-ctx.Done(): return "", ctx.Err() - case event := <-eventStream.eventResp: + case notify := <-eventsCh: + if notify.Err != nil { + return "", err + } + + event := notify.Event if e := event.GetRoundFailed(); e != nil { pingStop() return "", fmt.Errorf("round failed: %s", e.GetReason()) @@ -51,7 +56,7 @@ func (a *arkClient) handleRoundStream( log.Info("a round finalization started") signedForfeitTxs, err := a.handleRoundFinalization( - e, vtxosToSign, receivers, + ctx, e, vtxosToSign, receivers, ) if err != nil { return "", err @@ -63,7 +68,7 @@ func (a *arkClient) handleRoundStream( } log.Info("finalizing payment... ") - _, err = a.innerClient.finalizePayment(ctx, &arkv1.FinalizePaymentRequest{ + _, err = a.client.FinalizePayment(ctx, &arkv1.FinalizePaymentRequest{ SignedForfeitTxs: signedForfeitTxs, }) if err != nil { @@ -77,15 +82,14 @@ func (a *arkClient) handleRoundStream( if event.GetRoundFinalized() != nil { return event.GetRoundFinalized().GetPoolTxid(), nil } - case e := <-eventStream.err: - return "", e } } } func (a *arkClient) handleRoundFinalization( + ctx context.Context, finalization *arkv1.RoundFinalizationEvent, - vtxosToSign []vtxo, + vtxosToSign []*client.Vtxo, receivers []*arkv1.Output, ) ([]string, error) { if err := a.validateCongestionTree(finalization, receivers); err != nil { @@ -93,7 +97,7 @@ func (a *arkClient) handleRoundFinalization( } return a.loopAndSign( - finalization.GetForfeitTxs(), vtxosToSign, finalization.GetConnectors(), + ctx, finalization.GetForfeitTxs(), vtxosToSign, finalization.GetConnectors(), ) } @@ -107,21 +111,18 @@ func (a *arkClient) validateCongestionTree( return err } - congestionTree, err := toCongestionTree(finalization.GetCongestionTree()) + congestionTree, err := utils.ToCongestionTree( + finalization.GetCongestionTree(), + ) if err != nil { return err } connectors := finalization.GetConnectors() - aspPubkey, err := secp256k1.ParsePubKey(a.aspPubKey) - if err != nil { - return err - } - - if !isOnchainOnly(receivers) { + if !utils.IsOnchainOnly(receivers) { if err := tree.ValidateCongestionTree( - congestionTree, poolTx, aspPubkey, int64(a.roundLifeTime), + congestionTree, poolTx, a.StoreData.AspPubkey, a.RoundLifetime, ); err != nil { return err } @@ -131,7 +132,9 @@ func (a *arkClient) validateCongestionTree( return err } - if err := a.validateReceivers(ptx, receivers, &congestionTree, aspPubkey); err != nil { + if err := a.validateReceivers( + ptx, receivers, &congestionTree, a.StoreData.AspPubkey, + ); err != nil { return err } @@ -147,7 +150,9 @@ func (a *arkClient) validateReceivers( aspPubkey *secp256k1.PublicKey, ) error { for _, receiver := range receivers { - isOnChain, onchainScript, userPubkey, err := decodeReceiverAddress(receiver.Address) + isOnChain, onchainScript, userPubkey, err := utils.DecodeReceiverAddress( + receiver.Address, + ) if err != nil { return err } @@ -157,7 +162,9 @@ func (a *arkClient) validateReceivers( return err } } else { - if err := a.validateOffChainReceiver(congestionTree, receiver, userPubkey, aspPubkey); err != nil { + if err := a.validateOffChainReceiver( + congestionTree, receiver, userPubkey, aspPubkey, + ); err != nil { return err } } @@ -195,8 +202,9 @@ func (a *arkClient) validateOffChainReceiver( userPubkey, aspPubkey *secp256k1.PublicKey, ) error { found := false - outputTapKey, _, err := computeVtxoTaprootScript( - userPubkey, aspPubkey, uint(a.unilateralExitDelay), + net := a.explorer.GetNetwork() + outputTapKey, _, _, _, err := tree.ComputeVtxoTaprootScript( + userPubkey, aspPubkey, uint(a.UnilateralExitDelay), net, ) if err != nil { return err @@ -233,7 +241,8 @@ func (a *arkClient) validateOffChainReceiver( } func (a *arkClient) loopAndSign( - forfeitTxs []string, vtxosToSign []vtxo, connectors []string, + ctx context.Context, + forfeitTxs []string, vtxosToSign []*client.Vtxo, connectors []string, ) ([]string, error) { signedForfeits := make([]string, 0) @@ -254,8 +263,8 @@ func (a *arkClient) loopAndSign( for _, input := range pset.Inputs { inputTxid := chainhash.Hash(input.PreviousTxid).String() for _, coin := range vtxosToSign { - if inputTxid == coin.txid { - signedPset, err := a.signForfeitTx(forfeitTx, pset, connectorsTxids) + if inputTxid == coin.Txid { + signedPset, err := a.signForfeitTx(ctx, forfeitTx, pset, connectorsTxids) if err != nil { return nil, err } @@ -269,7 +278,7 @@ func (a *arkClient) loopAndSign( } func (a *arkClient) signForfeitTx( - txStr string, tx *psetv2.Pset, connectorsTxids []string, + ctx context.Context, txStr string, tx *psetv2.Pset, connectorsTxids []string, ) (string, error) { connectorTxid := chainhash.Hash(tx.Inputs[0].PreviousTxid).String() connectorFound := false @@ -283,5 +292,5 @@ func (a *arkClient) signForfeitTx( return "", fmt.Errorf("connector txid %s not found in the connectors list", connectorTxid) } - return a.wallet.SignTransaction(a.explorerSvc, txStr) + return a.wallet.SignTransaction(ctx, a.explorer, txStr) } diff --git a/pkg/client-sdk/example/alice_to_bob.go b/pkg/client-sdk/example/alice_to_bob.go index 074c7e4..05ee4bd 100644 --- a/pkg/client-sdk/example/alice_to_bob.go +++ b/pkg/client-sdk/example/alice_to_bob.go @@ -14,42 +14,28 @@ import ( log "github.com/sirupsen/logrus" ) -func main() { - var ( - //grpcAspUrl = "localhost:8080" - restAspUrl = "http://localhost:8080" - //grpcProtocol = arksdk.Grpc - restProtocol = arksdk.Rest - ctx = context.Background() +var ( + aspUrl = "localhost:8080" + clientType = arksdk.GrpcClient + password = "password" + walletType = arksdk.SingleKeyWallet +) - aspUrl = restAspUrl - protocol = restProtocol - ) +func main() { + ctx := context.Background() log.Info("alice is setting up her ark wallet...") - aliceConfigStore, err := inmemorystore.New(aspUrl, protocol) + + aliceArkClient, err := setupArkClient() if err != nil { log.Fatal(err) } - aliceWalletStore := inmemorystore.NewWalletStore() - aliceWallet, err := arksdk.NewSingleKeyWallet(ctx, aliceWalletStore) - if err != nil { - log.Fatal(err) - } - - aliceArkClient, err := arksdk.New( - ctx, - aliceWallet, - aliceConfigStore, - ) - if err != nil { - log.Fatal(err) - } - - if err := aliceArkClient.Connect(ctx); err != nil { + if err := aliceArkClient.Unlock(ctx, password); err != nil { log.Fatal(err) } + //nolint:all + defer aliceArkClient.Lock(ctx, password) log.Info("alice is acquiring onchain funds...") _, aliceOnchainAddr, err := aliceArkClient.Receive(ctx) @@ -61,9 +47,7 @@ func main() { log.Fatal(err) } - if err := generateBlock(); err != nil { - log.Fatal(err) - } + time.Sleep(5 * time.Second) onboardAmount := uint64(20000) log.Infof("alice is onboarding with %d sats offchain...", onboardAmount) @@ -88,33 +72,18 @@ func main() { log.Infof("alice onchain balance: %d", aliceBalance.OnchainBalance.SpendableAmount) log.Infof("alice offchain balance: %d", aliceBalance.OffchainBalance.Total) - bobConfigStore, err := inmemorystore.New(aspUrl, protocol) - if err != nil { - log.Fatal(err) - } - fmt.Println("") log.Info("bob is setting up his ark wallet...") - bobWalletStore := inmemorystore.NewWalletStore() - if _, err := bobWalletStore.CreatePrivateKey(); err != nil { - log.Fatal(err) - } - - bobWallet, err := arksdk.NewSingleKeyWallet(ctx, bobWalletStore) + bobArkClient, err := setupArkClient() if err != nil { log.Fatal(err) } - bobArkClient, err := arksdk.New( - ctx, bobWallet, bobConfigStore, - ) - if err != nil { - log.Fatal(err) - } - - if err := bobArkClient.Connect(ctx); err != nil { + if err := bobArkClient.Unlock(ctx, password); err != nil { log.Fatal(err) } + //nolint:all + defer bobArkClient.Lock(ctx, password) bobOffchainAddr, _, err := bobArkClient.Receive(ctx) if err != nil { @@ -130,17 +99,17 @@ func main() { log.Infof("bob offchain balance: %d", bobBalance.OffchainBalance.Total) amount := uint64(1000) + receivers := []arksdk.Receiver{ + { + To: bobOffchainAddr, + Amount: amount, + }, + } + fmt.Println("") log.Infof("alice is sending %d sats to bob offchain...", amount) - txid, err = aliceArkClient.SendOffChain( - ctx, - false, - []arksdk.Receiver{ - { - To: bobOffchainAddr, - Amount: amount, - }, - }) + + txid, err = aliceArkClient.SendOffChain(ctx, false, receivers) if err != nil { log.Fatal(err) } @@ -171,6 +140,28 @@ func main() { log.Infof("bob offchain balance: %d", bobBalance.OffchainBalance.Total) } +func setupArkClient() (arksdk.ArkClient, error) { + storeSvc, err := inmemorystore.NewConfigStore() + if err != nil { + return nil, fmt.Errorf("failed to setup store: %s", err) + } + client, err := arksdk.New(storeSvc) + if err != nil { + return nil, fmt.Errorf("failed to setup ark client: %s", err) + } + + if err := client.Init(context.Background(), arksdk.InitArgs{ + WalletType: walletType, + ClientType: clientType, + AspUrl: aspUrl, + Password: password, + }); err != nil { + return nil, fmt.Errorf("failed to initialize wallet: %s", err) + } + + return client, nil +} + func runCommand(name string, arg ...string) (string, error) { errb := new(strings.Builder) cmd := newCommand(name, arg...) diff --git a/pkg/client-sdk/example/wasm/go.mod b/pkg/client-sdk/example/wasm/go.mod index ed5f939..4c35dbc 100644 --- a/pkg/client-sdk/example/wasm/go.mod +++ b/pkg/client-sdk/example/wasm/go.mod @@ -48,11 +48,11 @@ require ( go.opentelemetry.io/otel v1.24.0 // indirect go.opentelemetry.io/otel/metric v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect - golang.org/x/crypto v0.23.0 // indirect - golang.org/x/net v0.25.0 // indirect + golang.org/x/crypto v0.25.0 // indirect + golang.org/x/net v0.27.0 // indirect golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.20.0 // indirect - golang.org/x/text v0.15.0 // indirect + golang.org/x/sys v0.22.0 // indirect + golang.org/x/text v0.16.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect google.golang.org/grpc v1.65.0 // indirect diff --git a/pkg/client-sdk/example/wasm/go.sum b/pkg/client-sdk/example/wasm/go.sum index fa0159e..f370331 100644 --- a/pkg/client-sdk/example/wasm/go.sum +++ b/pkg/client-sdk/example/wasm/go.sum @@ -147,15 +147,15 @@ go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= @@ -169,13 +169,13 @@ golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/pkg/client-sdk/example/wasm/index.html b/pkg/client-sdk/example/wasm/index.html index 867b909..12f60f9 100644 --- a/pkg/client-sdk/example/wasm/index.html +++ b/pkg/client-sdk/example/wasm/index.html @@ -16,13 +16,26 @@ logArea.scrollTop = logArea.scrollHeight; } - async function conn() { + async function initWallet() { try { - await connect(); - logMessage("Connected to ASP"); + const walletType = "singlekey" + const clientType = "rest" + const privateKey = document.getElementById("prvkey").value; + const password = document.getElementById("i_password").value; + if (!password) { + logMessage("Init error: password is required"); + return; + } + const aspUrl = document.getElementById("aspUrl").value; + if (!aspUrl) { + logMessage("Init error: asp url is required"); + return; + } + await init(walletType, clientType, aspUrl, privateKey, password); + logMessage("wallet initialized and connected to ASP"); await config(); } catch (err) { - logMessage("Connect error: " + err.message); + logMessage("Init error: " + err.message); } } @@ -45,13 +58,18 @@ async function send() { + const password = document.getElementById("s_password").value; + if (!password) { + logMessage("Send error: password is required"); + return; + } + try { const address = document.getElementById("sendAddress").value; if (!address) { logMessage("Send error: Address is required"); return; } - const amountStr = document.getElementById("amountToSend").value; if (!amountStr) { logMessage("Send error: Amount is required"); @@ -59,10 +77,13 @@ } const amount = parseInt(amountStr, 10); + await unlock(password); const txID = await sendOffChain(false, [{ To: address, Amount: amount }]); logMessage("Sent money with tx ID: " + txID); } catch (err) { logMessage("Send error: " + err.message); + } finally { + await lock(password); } } @@ -72,32 +93,48 @@ logMessage("ASP URL: " + aspUrl); const aspPubKeyHex = await getAspPubKeyHex(); - logMessage("ASP PubKey Hex: " + aspPubKeyHex); + logMessage("ASP PubKey: " + aspPubKeyHex); - const transportProtocol = await getTransportProtocol(); - logMessage("Transport Protocol: " + transportProtocol); + const walletType = await getWalletType(); + logMessage("Wallet Type: " + walletType); - const explorerUrl = await getExplorerUrl(); - logMessage("Explorer URL: " + explorerUrl); + const clientType = await getClientType(); + logMessage("Client Type: " + clientType); - const network = await getNetwork(); - logMessage("Network: " + network); + const roundLifetime = await getRoundLifetime(); + logMessage("Round Lifetime: " + roundLifetime); + + const unilateralExitDelay = await getUnilateralExitDelay(); + logMessage("Unilateral Exit Delay: " + unilateralExitDelay); + + const minRelayFee = await getMinRelayFee(); + logMessage("Min Relay Fee: " + minRelayFee); } catch (err) { logMessage("Config error: " + err.message); } } async function board() { - logMessage("Board button clicked"); const amountStr = document.getElementById("amount").value; const amount = parseInt(amountStr, 10); - logMessage("Amount provided: " + amount); + const password = document.getElementById("o_password").value; + if (!password) { + logMessage("Onboard error: password is required"); + return; + } + try { + console.log("unlocking..."); + await unlock(password); + console.log(amount, password); const txID = await onboard(amount); logMessage("Onboarded with amount: " + amount + " and txID: " + txID + ", if in regtest mine a block"); } catch (err) { - logMessage("Board error: " + err.message); + logMessage("Onboard error: " + err.message); + } finally { + await lock(password); } + } @@ -106,7 +143,10 @@