network: GetNode

pull/1/head
Edouard Paris 5 years ago
parent 69f9a203fa
commit b763317014

@ -14,7 +14,9 @@ type Backend interface {
NodeName() string
Info(ctx context.Context) (*models.Info, error)
Info(context.Context) (*models.Info, error)
GetNode(context.Context, string) (*models.Node, error)
GetWalletBalance(context.Context) (*models.WalletBalance, error)

@ -230,6 +230,24 @@ func (l Backend) GetChannelInfo(ctx context.Context, channel *models.Channel) er
return nil
}
func (l Backend) GetNode(ctx context.Context, pubkey string) (*models.Node, error) {
l.logger.Debug("GetNode")
clt, err := l.Client(ctx)
if err != nil {
return nil, err
}
defer clt.Close()
req := &lnrpc.NodeInfoRequest{PubKey: pubkey}
resp, err := clt.GetNodeInfo(ctx, req)
if err != nil {
return nil, errors.WithStack(err)
}
return nodeProtoToNode(resp), nil
}
func (l Backend) CreateInvoice(ctx context.Context, amount int64, desc string) (*models.Invoice, error) {
l.logger.Debug("Create invoice...",
logging.Int64("amount", amount),

@ -1,6 +1,8 @@
package lnd
import (
"time"
"github.com/lightningnetwork/lnd/lnrpc"
"github.com/edouardparis/lntop/network/models"
@ -160,3 +162,26 @@ func infoProtoToInfo(resp *lnrpc.GetInfoResponse) *models.Info {
Testnet: resp.Testnet,
}
}
func nodeProtoToNode(resp *lnrpc.NodeInfo) *models.Node {
if resp == nil || resp.Node == nil {
return nil
}
addresses := make([]*models.NodeAddress, len(resp.Node.Addresses))
for i := range resp.Node.Addresses {
addresses[i] = &models.NodeAddress{
Network: resp.Node.Addresses[i].Network,
Addr: resp.Node.Addresses[i].Addr,
}
}
return &models.Node{
NumChannels: resp.NumChannels,
TotalCapacity: resp.TotalCapacity,
LastUpdate: time.Unix(int64(resp.Node.LastUpdate), 0),
PubKey: resp.Node.PubKey,
Alias: resp.Node.Alias,
Addresses: addresses,
}
}

@ -42,6 +42,10 @@ func (b *Backend) SubscribeChannels(context.Context, chan *models.ChannelUpdate)
return nil
}
func (l *Backend) GetNode(ctx context.Context, pubkey string) (*models.Node, error) {
return &models.Node{}, nil
}
func (b *Backend) GetWalletBalance(ctx context.Context) (*models.WalletBalance, error) {
return &models.WalletBalance{}, nil
}

@ -0,0 +1,17 @@
package models
import "time"
type Node struct {
NumChannels uint32
TotalCapacity int64
LastUpdate time.Time
PubKey string
Alias string
Addresses []*NodeAddress
}
type NodeAddress struct {
Network string
Addr string
}
Loading…
Cancel
Save