Add "gap" parameter to websocket "getAccountInfo" method #206
This commit is contained in:
parent
701348c96d
commit
bf461d0737
@ -831,6 +831,19 @@ func websocketTestsBitcoinType(t *testing.T, ts *httptest.Server) {
|
||||
},
|
||||
want: `{"id":"3","data":{"page":1,"totalPages":1,"itemsOnPage":25,"address":"2MzmAKayJmja784jyHvRUW1bXPget1csRRG","balance":"0","totalReceived":"1","totalSent":"1","unconfirmedBalance":"0","unconfirmedTxs":0,"txs":2,"txids":["3d90d15ed026dc45e19ffb52875ed18fa9e8012ad123d7f7212176e2b0ebdb71","effd9ef509383d536b1c8af5bf434c8efbf521a4f2befd4022bbd68694b4ac75"]}}`,
|
||||
},
|
||||
{
|
||||
name: "websocket getAccountInfo xpub",
|
||||
req: websocketReq{
|
||||
Method: "getAccountInfo",
|
||||
Params: map[string]interface{}{
|
||||
"descriptor": dbtestdata.Xpub,
|
||||
"details": "tokens",
|
||||
"tokens": "derived",
|
||||
"gap": 10,
|
||||
},
|
||||
},
|
||||
want: `{"id":"4","data":{"address":"upub5E1xjDmZ7Hhej6LPpS8duATdKXnRYui7bDYj6ehfFGzWDZtmCmQkZhc3Zb7kgRLtHWd16QFxyP86JKL3ShZEBFX88aciJ3xyocuyhZZ8g6q","balance":"118641975500","totalReceived":"118641975501","totalSent":"1","unconfirmedBalance":"0","unconfirmedTxs":0,"txs":3,"usedTokens":2,"tokens":[{"type":"XPUBAddress","name":"2MzmAKayJmja784jyHvRUW1bXPget1csRRG","path":"m/49'/1'/33'/0/0","transfers":2,"decimals":8},{"type":"XPUBAddress","name":"2MsYfbi6ZdVXLDNrYAQ11ja9Sd3otMk4Pmj","path":"m/49'/1'/33'/0/1","transfers":0,"decimals":8},{"type":"XPUBAddress","name":"2MuAZNAjLSo6RLFad2fvHSfgqBD7BoEVy4T","path":"m/49'/1'/33'/0/2","transfers":0,"decimals":8},{"type":"XPUBAddress","name":"2NEqKzw3BosGnBE9by5uaDy5QgwjHac4Zbg","path":"m/49'/1'/33'/0/3","transfers":0,"decimals":8},{"type":"XPUBAddress","name":"2Mw7vJNC8zUK6VNN4CEjtoTYmuNPLewxZzV","path":"m/49'/1'/33'/0/4","transfers":0,"decimals":8},{"type":"XPUBAddress","name":"2N1kvo97NFASPXiwephZUxE9PRXunjTxEc4","path":"m/49'/1'/33'/0/5","transfers":0,"decimals":8},{"type":"XPUBAddress","name":"2MuWrWMzoBt8VDFNvPmpJf42M1GTUs85fPx","path":"m/49'/1'/33'/0/6","transfers":0,"decimals":8},{"type":"XPUBAddress","name":"2MuVZ2Ca6Da9zmYynt49Rx7uikAgubGcymF","path":"m/49'/1'/33'/0/7","transfers":0,"decimals":8},{"type":"XPUBAddress","name":"2MzRGWDUmrPP9HwYu4B43QGCTLwoop5cExa","path":"m/49'/1'/33'/0/8","transfers":0,"decimals":8},{"type":"XPUBAddress","name":"2N5C9EEWJzyBXhpyPHqa3UNed73Amsi5b3L","path":"m/49'/1'/33'/0/9","transfers":0,"decimals":8},{"type":"XPUBAddress","name":"2MzNawz2zjwq1L85GDE3YydEJGJYfXxaWkk","path":"m/49'/1'/33'/0/10","transfers":0,"decimals":8},{"type":"XPUBAddress","name":"2MzSBtRWHbBjeUcu3H5VRDqkvz5sfmDxJKo","path":"m/49'/1'/33'/1/0","transfers":0,"decimals":8},{"type":"XPUBAddress","name":"2MtShtAJYb1afWduUTwF1SixJjan7urZKke","path":"m/49'/1'/33'/1/1","transfers":0,"decimals":8},{"type":"XPUBAddress","name":"2N3cP668SeqyBEr9gnB4yQEmU3VyxeRYith","path":"m/49'/1'/33'/1/2","transfers":0,"decimals":8},{"type":"XPUBAddress","name":"2N6utyMZfPNUb1Bk8oz7p2JqJrXkq83gegu","path":"m/49'/1'/33'/1/3","transfers":1,"decimals":8},{"type":"XPUBAddress","name":"2NEzatauNhf9kPTwwj6ZfYKjUdy52j4hVUL","path":"m/49'/1'/33'/1/4","transfers":0,"decimals":8},{"type":"XPUBAddress","name":"2N4RjsDp4LBpkNqyF91aNjgpF9CwDwBkJZq","path":"m/49'/1'/33'/1/5","transfers":0,"decimals":8},{"type":"XPUBAddress","name":"2N8XygTmQc4NoBBPEy3yybnfCYhsxFtzPDY","path":"m/49'/1'/33'/1/6","transfers":0,"decimals":8},{"type":"XPUBAddress","name":"2N5BjBomZvb48sccK2vwLMiQ5ETKp1fdPVn","path":"m/49'/1'/33'/1/7","transfers":0,"decimals":8},{"type":"XPUBAddress","name":"2MybMwbZRPCGU3SMWPwQCpDkbcQFw5Hbwen","path":"m/49'/1'/33'/1/8","transfers":0,"decimals":8},{"type":"XPUBAddress","name":"2N7HexL4dyAQc7Th4iqcCW4hZuyiZsLWf74","path":"m/49'/1'/33'/1/9","transfers":0,"decimals":8},{"type":"XPUBAddress","name":"2NF6X5FDGWrQj4nQrfP6hA77zB5WAc1DGup","path":"m/49'/1'/33'/1/10","transfers":0,"decimals":8},{"type":"XPUBAddress","name":"2N4ZRPdvc7BVioBTohy4F6QtxreqcjNj26b","path":"m/49'/1'/33'/1/11","transfers":0,"decimals":8},{"type":"XPUBAddress","name":"2Mtfho1rLmevh4qTnkYWxZEFCWteDMtTcUF","path":"m/49'/1'/33'/1/12","transfers":0,"decimals":8},{"type":"XPUBAddress","name":"2NFUCphKYvmMcNZRZrF261mRX6iADVB9Qms","path":"m/49'/1'/33'/1/13","transfers":0,"decimals":8}]}}`,
|
||||
},
|
||||
{
|
||||
name: "websocket getAccountUtxo",
|
||||
req: websocketReq{
|
||||
@ -839,7 +852,7 @@ func websocketTestsBitcoinType(t *testing.T, ts *httptest.Server) {
|
||||
"descriptor": dbtestdata.Addr1,
|
||||
},
|
||||
},
|
||||
want: `{"id":"4","data":[{"txid":"00b2c06055e5e90e9c82bd4181fde310104391a7fa4f289b1704e5d90caa3840","vout":0,"value":"100000000","height":225493,"confirmations":2}]}`,
|
||||
want: `{"id":"5","data":[{"txid":"00b2c06055e5e90e9c82bd4181fde310104391a7fa4f289b1704e5d90caa3840","vout":0,"value":"100000000","height":225493,"confirmations":2}]}`,
|
||||
},
|
||||
{
|
||||
name: "websocket getAccountUtxo",
|
||||
@ -849,7 +862,7 @@ func websocketTestsBitcoinType(t *testing.T, ts *httptest.Server) {
|
||||
"descriptor": dbtestdata.Addr4,
|
||||
},
|
||||
},
|
||||
want: `{"id":"5","data":[]}`,
|
||||
want: `{"id":"6","data":[]}`,
|
||||
},
|
||||
{
|
||||
name: "websocket getTransaction",
|
||||
@ -859,7 +872,7 @@ func websocketTestsBitcoinType(t *testing.T, ts *httptest.Server) {
|
||||
"txid": dbtestdata.TxidB2T2,
|
||||
},
|
||||
},
|
||||
want: `{"id":"6","data":{"txid":"3d90d15ed026dc45e19ffb52875ed18fa9e8012ad123d7f7212176e2b0ebdb71","vin":[{"txid":"7c3be24063f268aaa1ed81b64776798f56088757641a34fb156c4f51ed2e9d25","n":0,"addresses":["mzB8cYrfRwFRFAGTDzV8LkUQy5BQicxGhX"],"value":"317283951061"},{"txid":"effd9ef509383d536b1c8af5bf434c8efbf521a4f2befd4022bbd68694b4ac75","vout":1,"n":1,"addresses":["2MzmAKayJmja784jyHvRUW1bXPget1csRRG"],"value":"1"}],"vout":[{"value":"118641975500","n":0,"hex":"a91495e9fbe306449c991d314afe3c3567d5bf78efd287","addresses":["2N6utyMZfPNUb1Bk8oz7p2JqJrXkq83gegu"]},{"value":"198641975500","n":1,"hex":"76a9143f8ba3fda3ba7b69f5818086e12223c6dd25e3c888ac","addresses":["mmJx9Y8ayz9h14yd9fgCW1bUKoEpkBAquP"]}],"blockHash":"00000000eb0443fd7dc4a1ed5c686a8e995057805f9a161d9a5a77a95e72b7b6","blockHeight":225494,"confirmations":1,"blockTime":22549400001,"value":"317283951000","valueIn":"317283951062","fees":"62"}}`,
|
||||
want: `{"id":"7","data":{"txid":"3d90d15ed026dc45e19ffb52875ed18fa9e8012ad123d7f7212176e2b0ebdb71","vin":[{"txid":"7c3be24063f268aaa1ed81b64776798f56088757641a34fb156c4f51ed2e9d25","n":0,"addresses":["mzB8cYrfRwFRFAGTDzV8LkUQy5BQicxGhX"],"value":"317283951061"},{"txid":"effd9ef509383d536b1c8af5bf434c8efbf521a4f2befd4022bbd68694b4ac75","vout":1,"n":1,"addresses":["2MzmAKayJmja784jyHvRUW1bXPget1csRRG"],"value":"1"}],"vout":[{"value":"118641975500","n":0,"hex":"a91495e9fbe306449c991d314afe3c3567d5bf78efd287","addresses":["2N6utyMZfPNUb1Bk8oz7p2JqJrXkq83gegu"]},{"value":"198641975500","n":1,"hex":"76a9143f8ba3fda3ba7b69f5818086e12223c6dd25e3c888ac","addresses":["mmJx9Y8ayz9h14yd9fgCW1bUKoEpkBAquP"]}],"blockHash":"00000000eb0443fd7dc4a1ed5c686a8e995057805f9a161d9a5a77a95e72b7b6","blockHeight":225494,"confirmations":1,"blockTime":22549400001,"value":"317283951000","valueIn":"317283951062","fees":"62"}}`,
|
||||
},
|
||||
{
|
||||
name: "websocket getTransaction",
|
||||
@ -869,7 +882,7 @@ func websocketTestsBitcoinType(t *testing.T, ts *httptest.Server) {
|
||||
"txid": "not a tx",
|
||||
},
|
||||
},
|
||||
want: `{"id":"7","data":{"error":{"message":"Transaction 'not a tx' not found"}}}`,
|
||||
want: `{"id":"8","data":{"error":{"message":"Transaction 'not a tx' not found"}}}`,
|
||||
},
|
||||
{
|
||||
name: "websocket getTransactionSpecific",
|
||||
@ -879,7 +892,7 @@ func websocketTestsBitcoinType(t *testing.T, ts *httptest.Server) {
|
||||
"txid": dbtestdata.TxidB2T2,
|
||||
},
|
||||
},
|
||||
want: `{"id":"8","data":{"hex":"","txid":"3d90d15ed026dc45e19ffb52875ed18fa9e8012ad123d7f7212176e2b0ebdb71","version":0,"locktime":0,"vin":[{"coinbase":"","txid":"7c3be24063f268aaa1ed81b64776798f56088757641a34fb156c4f51ed2e9d25","vout":0,"scriptSig":{"hex":""},"sequence":0,"addresses":null},{"coinbase":"","txid":"effd9ef509383d536b1c8af5bf434c8efbf521a4f2befd4022bbd68694b4ac75","vout":1,"scriptSig":{"hex":""},"sequence":0,"addresses":null}],"vout":[{"ValueSat":118641975500,"value":0,"n":0,"scriptPubKey":{"hex":"a91495e9fbe306449c991d314afe3c3567d5bf78efd287","addresses":null}},{"ValueSat":198641975500,"value":0,"n":1,"scriptPubKey":{"hex":"76a9143f8ba3fda3ba7b69f5818086e12223c6dd25e3c888ac","addresses":null}}],"confirmations":1,"time":22549400001,"blocktime":22549400001}}`,
|
||||
want: `{"id":"9","data":{"hex":"","txid":"3d90d15ed026dc45e19ffb52875ed18fa9e8012ad123d7f7212176e2b0ebdb71","version":0,"locktime":0,"vin":[{"coinbase":"","txid":"7c3be24063f268aaa1ed81b64776798f56088757641a34fb156c4f51ed2e9d25","vout":0,"scriptSig":{"hex":""},"sequence":0,"addresses":null},{"coinbase":"","txid":"effd9ef509383d536b1c8af5bf434c8efbf521a4f2befd4022bbd68694b4ac75","vout":1,"scriptSig":{"hex":""},"sequence":0,"addresses":null}],"vout":[{"ValueSat":118641975500,"value":0,"n":0,"scriptPubKey":{"hex":"a91495e9fbe306449c991d314afe3c3567d5bf78efd287","addresses":null}},{"ValueSat":198641975500,"value":0,"n":1,"scriptPubKey":{"hex":"76a9143f8ba3fda3ba7b69f5818086e12223c6dd25e3c888ac","addresses":null}}],"confirmations":1,"time":22549400001,"blocktime":22549400001}}`,
|
||||
},
|
||||
{
|
||||
name: "websocket estimateFee",
|
||||
@ -893,7 +906,7 @@ func websocketTestsBitcoinType(t *testing.T, ts *httptest.Server) {
|
||||
},
|
||||
},
|
||||
},
|
||||
want: `{"id":"9","data":[{"feePerTx":"246","feePerUnit":"199"},{"feePerTx":"616","feePerUnit":"499"},{"feePerTx":"1233","feePerUnit":"999"},{"feePerTx":"2467","feePerUnit":"1999"}]}`,
|
||||
want: `{"id":"10","data":[{"feePerTx":"246","feePerUnit":"199"},{"feePerTx":"616","feePerUnit":"499"},{"feePerTx":"1233","feePerUnit":"999"},{"feePerTx":"2467","feePerUnit":"1999"}]}`,
|
||||
},
|
||||
{
|
||||
name: "websocket sendTransaction",
|
||||
@ -903,21 +916,21 @@ func websocketTestsBitcoinType(t *testing.T, ts *httptest.Server) {
|
||||
"hex": "123456",
|
||||
},
|
||||
},
|
||||
want: `{"id":"10","data":{"result":"9876"}}`,
|
||||
want: `{"id":"11","data":{"result":"9876"}}`,
|
||||
},
|
||||
{
|
||||
name: "websocket subscribeNewBlock",
|
||||
req: websocketReq{
|
||||
Method: "subscribeNewBlock",
|
||||
},
|
||||
want: `{"id":"11","data":{"subscribed":true}}`,
|
||||
want: `{"id":"12","data":{"subscribed":true}}`,
|
||||
},
|
||||
{
|
||||
name: "websocket unsubscribeNewBlock",
|
||||
req: websocketReq{
|
||||
Method: "unsubscribeNewBlock",
|
||||
},
|
||||
want: `{"id":"12","data":{"subscribed":false}}`,
|
||||
want: `{"id":"13","data":{"subscribed":false}}`,
|
||||
},
|
||||
{
|
||||
name: "websocket subscribeAddresses",
|
||||
@ -927,14 +940,14 @@ func websocketTestsBitcoinType(t *testing.T, ts *httptest.Server) {
|
||||
"addresses": []string{dbtestdata.Addr1, dbtestdata.Addr2},
|
||||
},
|
||||
},
|
||||
want: `{"id":"13","data":{"subscribed":true}}`,
|
||||
want: `{"id":"14","data":{"subscribed":true}}`,
|
||||
},
|
||||
{
|
||||
name: "websocket unsubscribeAddresses",
|
||||
req: websocketReq{
|
||||
Method: "unsubscribeAddresses",
|
||||
},
|
||||
want: `{"id":"14","data":{"subscribed":false}}`,
|
||||
want: `{"id":"15","data":{"subscribed":false}}`,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@ -357,6 +357,7 @@ type accountInfoReq struct {
|
||||
FromHeight int `json:"from"`
|
||||
ToHeight int `json:"to"`
|
||||
ContractFilter string `json:"contractFilter"`
|
||||
Gap int `json:"gap"`
|
||||
}
|
||||
|
||||
func unmarshalGetAccountInfoRequest(params []byte) (*accountInfoReq, error) {
|
||||
@ -401,7 +402,7 @@ func (s *WebsocketServer) getAccountInfo(req *accountInfoReq) (res *api.Address,
|
||||
if req.PageSize == 0 {
|
||||
req.PageSize = txsOnPage
|
||||
}
|
||||
a, err := s.api.GetXpubAddress(req.Descriptor, req.Page, req.PageSize, opt, &filter, 0)
|
||||
a, err := s.api.GetXpubAddress(req.Descriptor, req.Page, req.PageSize, opt, &filter, req.Gap)
|
||||
if err != nil {
|
||||
return s.api.GetAddress(req.Descriptor, req.Page, req.PageSize, opt, &filter)
|
||||
}
|
||||
|
||||
@ -135,6 +135,7 @@
|
||||
from,
|
||||
to,
|
||||
contractFilter
|
||||
// default gap=20
|
||||
};
|
||||
send(method, params, function (result) {
|
||||
document.getElementById('getAccountInfoResult').innerText = JSON.stringify(result).replace(/,/g, ", ");
|
||||
|
||||
Loading…
Reference in New Issue
Block a user