From 1c29283bf064ec6cc5e083658a52620c98bcbcbc Mon Sep 17 00:00:00 2001 From: Martin Boehm Date: Mon, 14 Jan 2019 17:12:33 +0100 Subject: [PATCH] Add getAccountUtxo method to websocket interface --- api/worker.go | 3 +++ server/websocket.go | 15 ++++++++++++++- static/test-websocket.html | 26 ++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/api/worker.go b/api/worker.go index 05720374..372c3202 100644 --- a/api/worker.go +++ b/api/worker.go @@ -765,6 +765,9 @@ func (w *Worker) GetAddress(address string, page int, txsOnPage int, option GetA // GetAddressUtxo returns unspent outputs for given address func (w *Worker) GetAddressUtxo(address string, onlyConfirmed bool) ([]AddressUtxo, error) { + if w.chainType != bchain.ChainBitcoinType { + return nil, NewAPIError("Not supported", true) + } start := time.Now() addrDesc, err := w.chainParser.GetAddrDescFromAddress(address) if err != nil { diff --git a/server/websocket.go b/server/websocket.go index 4002123d..304ac68d 100644 --- a/server/websocket.go +++ b/server/websocket.go @@ -237,6 +237,16 @@ var requestHandlers = map[string]func(*WebsocketServer, *websocketChannel, *webs } return }, + "getAccountUtxo": func(s *WebsocketServer, c *websocketChannel, req *websocketReq) (rv interface{}, err error) { + r := struct { + Descriptor string `json:"descriptor"` + }{} + err = json.Unmarshal(req.Params, &r) + if err == nil { + rv, err = s.getAccountUtxo(r.Descriptor) + } + return + }, "estimateFee": func(s *WebsocketServer, c *websocketChannel, req *websocketReq) (rv interface{}, err error) { return s.estimateFee(c, req.Params) }, @@ -338,7 +348,6 @@ func (s *WebsocketServer) getAccountInfo(req *accountInfoReq) (res *api.Address, default: opt = api.Basic } - return s.api.GetAddress(req.Descriptor, req.Page, req.PageSize, opt, &api.AddressFilter{ FromHeight: uint32(req.FromHeight), ToHeight: uint32(req.ToHeight), @@ -347,6 +356,10 @@ func (s *WebsocketServer) getAccountInfo(req *accountInfoReq) (res *api.Address, }) } +func (s *WebsocketServer) getAccountUtxo(descriptor string) (interface{}, error) { + return s.api.GetAddressUtxo(descriptor, false) +} + func (s *WebsocketServer) getInfo() (interface{}, error) { vi := common.GetVersionInfo() height, hash, err := s.db.GetBestBlock() diff --git a/static/test-websocket.html b/static/test-websocket.html index 3fe8e4ab..6e40e4c0 100644 --- a/static/test-websocket.html +++ b/static/test-websocket.html @@ -141,6 +141,17 @@ }); } + function getAccountUtxo() { + const descriptor = document.getElementById('getAccountUtxoDescriptor').value.trim(); + const method = 'getAccountUtxo'; + const params = { + descriptor, + }; + send(method, params, function (result) { + document.getElementById('getAccountUtxoResult').innerText = JSON.stringify(result).replace(/,/g, ", "); + }); + } + function estimateFee() { try { var blocks = document.getElementById('estimateFeeBlocks').value.split(","); @@ -302,6 +313,21 @@
+
+
+ +
+
+
+ +
+
+
+
+
+
+
+