diff --git a/cmd/lncli/cmd_build_route.go b/cmd/lncli/cmd_build_route.go index 64cda08fa..685989d42 100644 --- a/cmd/lncli/cmd_build_route.go +++ b/cmd/lncli/cmd_build_route.go @@ -88,7 +88,7 @@ func buildRoute(ctx *cli.Context) error { return err } - printJSON(route) + printRespJSON(route) return nil } diff --git a/cmd/lncli/cmd_query_mission_control.go b/cmd/lncli/cmd_query_mission_control.go index a35c2bb85..6071d0a4e 100644 --- a/cmd/lncli/cmd_query_mission_control.go +++ b/cmd/lncli/cmd_query_mission_control.go @@ -4,7 +4,6 @@ package main import ( "context" - "encoding/hex" "github.com/lightningnetwork/lnd/lnrpc/routerrpc" @@ -31,34 +30,7 @@ func queryMissionControl(ctx *cli.Context) error { return err } - type displayPairHistory struct { - NodeFrom, NodeTo string - SuccessTime, FailTime int64 - FailAmtSat, FailAmtMsat int64 - SuccessAmtSat, SuccessAmtMsat int64 - } - - displayResp := struct { - Pairs []displayPairHistory - }{} - - for _, n := range snapshot.Pairs { - displayResp.Pairs = append( - displayResp.Pairs, - displayPairHistory{ - NodeFrom: hex.EncodeToString(n.NodeFrom), - NodeTo: hex.EncodeToString(n.NodeTo), - FailTime: n.History.FailTime, - SuccessTime: n.History.SuccessTime, - FailAmtSat: n.History.FailAmtSat, - FailAmtMsat: n.History.FailAmtMsat, - SuccessAmtSat: n.History.SuccessAmtSat, - SuccessAmtMsat: n.History.SuccessAmtMsat, - }, - ) - } - - printJSON(displayResp) + printRespJSON(snapshot) return nil } diff --git a/cmd/lncli/commands.go b/cmd/lncli/commands.go index 244420c62..8da7931a9 100644 --- a/cmd/lncli/commands.go +++ b/cmd/lncli/commands.go @@ -5,7 +5,6 @@ import ( "bytes" "context" "encoding/hex" - "encoding/json" "errors" "fmt" "io" @@ -20,8 +19,9 @@ import ( "github.com/btcsuite/btcd/chaincfg/chainhash" "github.com/btcsuite/btcd/wire" - "github.com/golang/protobuf/jsonpb" - "github.com/golang/protobuf/proto" + "github.com/lightninglabs/protobuf-hex-display/json" + "github.com/lightninglabs/protobuf-hex-display/jsonpb" + "github.com/lightninglabs/protobuf-hex-display/proto" "github.com/lightningnetwork/lnd/lnrpc" "github.com/lightningnetwork/lnd/lnrpc/routerrpc" "github.com/lightningnetwork/lnd/routing/route" @@ -2427,15 +2427,7 @@ func sendPaymentRequest(ctx *cli.Context, req *lnrpc.SendRequest) error { paymentStream.CloseSend() - printJSON(struct { - E string `json:"payment_error"` - P string `json:"payment_preimage"` - R *lnrpc.Route `json:"payment_route"` - }{ - E: resp.PaymentError, - P: hex.EncodeToString(resp.PaymentPreimage), - R: resp.PaymentRoute, - }) + printRespJSON(resp) // If we get a payment error back, we pass an error // up to main which eventually calls fatal() and returns @@ -2637,15 +2629,7 @@ func sendToRouteRequest(ctx *cli.Context, req *lnrpc.SendToRouteRequest) error { return err } - printJSON(struct { - E string `json:"payment_error"` - P string `json:"payment_preimage"` - R *lnrpc.Route `json:"payment_route"` - }{ - E: resp.PaymentError, - P: hex.EncodeToString(resp.PaymentPreimage), - R: resp.PaymentRoute, - }) + printRespJSON(resp) return nil } @@ -2762,15 +2746,7 @@ func addInvoice(ctx *cli.Context) error { return err } - printJSON(struct { - RHash string `json:"r_hash"` - PayReq string `json:"pay_req"` - AddIndex uint64 `json:"add_index"` - }{ - RHash: hex.EncodeToString(resp.RHash), - PayReq: resp.PaymentRequest, - AddIndex: resp.AddIndex, - }) + printRespJSON(resp) return nil } @@ -3856,14 +3832,11 @@ func exportChanBackup(ctx *cli.Context) error { printJSON(struct { ChanPoint string `json:"chan_point"` - ChanBackup string `json:"chan_backup"` + ChanBackup []byte `json:"chan_backup"` }{ - ChanPoint: chanPoint.String(), - ChanBackup: hex.EncodeToString( - chanBackup.ChanBackup, - ), - }, - ) + ChanPoint: chanPoint.String(), + ChanBackup: chanBackup.ChanBackup, + }) return nil } @@ -3901,16 +3874,8 @@ func exportChanBackup(ctx *cli.Context) error { }.String()) } - printJSON(struct { - ChanPoints []string `json:"chan_points"` - MultiChanBackup string `json:"multi_chan_backup"` - }{ - ChanPoints: chanPoints, - MultiChanBackup: hex.EncodeToString( - chanBackup.MultiChanBackup.MultiChanBackup, - ), - }, - ) + printRespJSON(chanBackup) + return nil } diff --git a/cmd/lncli/invoicesrpc_active.go b/cmd/lncli/invoicesrpc_active.go index 75b7090ca..d769336d4 100644 --- a/cmd/lncli/invoicesrpc_active.go +++ b/cmd/lncli/invoicesrpc_active.go @@ -81,7 +81,7 @@ func settleInvoice(ctx *cli.Context) error { return err } - printJSON(resp) + printRespJSON(resp) return nil } @@ -134,7 +134,7 @@ func cancelInvoice(ctx *cli.Context) error { return err } - printJSON(resp) + printRespJSON(resp) return nil } diff --git a/cmd/lncli/watchtower_active.go b/cmd/lncli/watchtower_active.go index bfa9af666..489013f8b 100644 --- a/cmd/lncli/watchtower_active.go +++ b/cmd/lncli/watchtower_active.go @@ -4,7 +4,6 @@ package main import ( "context" - "encoding/hex" "github.com/lightningnetwork/lnd/lnrpc/watchtowerrpc" "github.com/urfave/cli" @@ -51,15 +50,7 @@ func towerInfo(ctx *cli.Context) error { return err } - printJSON(struct { - Pubkey string `json:"pubkey"` - Listeners []string `json:"listeners"` - URIs []string `json:"uris"` - }{ - Pubkey: hex.EncodeToString(resp.Pubkey), - Listeners: resp.Listeners, - URIs: resp.Uris, - }) + printRespJSON(resp) return nil } diff --git a/cmd/lncli/wtclient.go b/cmd/lncli/wtclient.go index bcc0a4eb7..5f887fc96 100644 --- a/cmd/lncli/wtclient.go +++ b/cmd/lncli/wtclient.go @@ -170,16 +170,8 @@ func listTowers(ctx *cli.Context) error { return err } - var listTowersResp = struct { - Towers []*Tower `json:"towers"` - }{ - Towers: make([]*Tower, len(resp.Towers)), - } - for i, tower := range resp.Towers { - listTowersResp.Towers[i] = NewTowerFromProto(tower) - } + printRespJSON(resp) - printJSON(listTowersResp) return nil } @@ -224,7 +216,7 @@ func getTower(ctx *cli.Context) error { return err } - printJSON(NewTowerFromProto(resp)) + printRespJSON(resp) return nil } diff --git a/cmd/lncli/wtclient_types.go b/cmd/lncli/wtclient_types.go deleted file mode 100644 index 4192bef02..000000000 --- a/cmd/lncli/wtclient_types.go +++ /dev/null @@ -1,50 +0,0 @@ -package main - -import ( - "encoding/hex" - - "github.com/lightningnetwork/lnd/lnrpc/wtclientrpc" -) - -// TowerSession encompasses information about a tower session. -type TowerSession struct { - NumBackups uint32 `json:"num_backups"` - NumPendingBackups uint32 `json:"num_pending_backups"` - MaxBackups uint32 `json:"max_backups"` - SweepSatPerByte uint32 `json:"sweep_sat_per_byte"` -} - -// NewTowerSessionsFromProto converts a set of tower sessions from their RPC -// type to a CLI-friendly type. -func NewTowerSessionsFromProto(sessions []*wtclientrpc.TowerSession) []*TowerSession { - towerSessions := make([]*TowerSession, 0, len(sessions)) - for _, session := range sessions { - towerSessions = append(towerSessions, &TowerSession{ - NumBackups: session.NumBackups, - NumPendingBackups: session.NumPendingBackups, - MaxBackups: session.MaxBackups, - SweepSatPerByte: session.SweepSatPerByte, - }) - } - return towerSessions -} - -// Tower encompasses information about a registered watchtower. -type Tower struct { - PubKey string `json:"pubkey"` - Addresses []string `json:"addresses"` - ActiveSessionCandidate bool `json:"active_session_candidate"` - NumSessions uint32 `json:"num_sessions"` - Sessions []*TowerSession `json:"sessions"` -} - -// NewTowerFromProto converts a tower from its RPC type to a CLI-friendly type. -func NewTowerFromProto(tower *wtclientrpc.Tower) *Tower { - return &Tower{ - PubKey: hex.EncodeToString(tower.Pubkey), - Addresses: tower.Addresses, - ActiveSessionCandidate: tower.ActiveSessionCandidate, - NumSessions: tower.NumSessions, - Sessions: NewTowerSessionsFromProto(tower.Sessions), - } -} diff --git a/go.mod b/go.mod index 947870913..8eb8cf4fb 100644 --- a/go.mod +++ b/go.mod @@ -34,6 +34,7 @@ require ( github.com/juju/version v0.0.0-20180108022336-b64dbd566305 // indirect github.com/kkdai/bstream v0.0.0-20181106074824-b3251f7901ec github.com/lightninglabs/neutrino v0.11.0 + github.com/lightninglabs/protobuf-hex-display v1.3.3-0.20191212020323-b444784ce75d github.com/lightningnetwork/lightning-onion v0.0.0-20191214001659-f34e9dc1651d github.com/lightningnetwork/lnd/cert v1.0.0 github.com/lightningnetwork/lnd/queue v1.0.2 diff --git a/go.sum b/go.sum index c34fd1a1b..84782ca1e 100644 --- a/go.sum +++ b/go.sum @@ -134,6 +134,8 @@ github.com/lightninglabs/neutrino v0.11.0 h1:lPpYFCtsfJX2W5zI4pWycPmbbBdr7zU+Baf github.com/lightninglabs/neutrino v0.11.0/go.mod h1:CuhF0iuzg9Sp2HO6ZgXgayviFTn1QHdSTJlMncK80wg= github.com/lightningnetwork/lightning-onion v0.0.0-20191214001659-f34e9dc1651d h1:U50MHOOeL6gR3Ee/l0eMvZMpmRo+ydzmlQuIruCyCsA= github.com/lightningnetwork/lightning-onion v0.0.0-20191214001659-f34e9dc1651d/go.mod h1:rigfi6Af/KqsF7Za0hOgcyq2PNH4AN70AaMRxcJkff4= +github.com/lightninglabs/protobuf-hex-display v1.3.3-0.20191212020323-b444784ce75d h1:QWD/5MPnaZfUVP7P8wLa4M8Td2DI7XXHXt2vhVtUgGI= +github.com/lightninglabs/protobuf-hex-display v1.3.3-0.20191212020323-b444784ce75d/go.mod h1:KDb67YMzoh4eudnzClmvs2FbiLG9vxISmLApUkCa4uI= github.com/ltcsuite/ltcd v0.0.0-20190101042124-f37f8bf35796 h1:sjOGyegMIhvgfq5oaue6Td+hxZuf3tDC8lAPrFldqFw= github.com/ltcsuite/ltcd v0.0.0-20190101042124-f37f8bf35796/go.mod h1:3p7ZTf9V1sNPI5H8P3NkTFF4LuwMdPl2DodF60qAKqY= github.com/ltcsuite/ltcutil v0.0.0-20181217130922-17f3b04680b6/go.mod h1:8Vg/LTOO0KYa/vlHWJ6XZAevPQThGH5sufO0Hrou/lA=