diff --git a/ln/lnd.go b/ln/lnd.go index 82e8656..941fe63 100644 --- a/ln/lnd.go +++ b/ln/lnd.go @@ -50,6 +50,18 @@ func (c LNDclient) AddInvoice(value int64, memo string) (Invoice, error) { return result, nil } +func (c LNDclient) NewAddress() (string, error) { + stdOutLogger.Printf("Getting a new BTC address") + request := lnrpc.NewAddressRequest{ + Type: lnrpc.AddressType_WITNESS_PUBKEY_HASH, + } + res, err := c.lndClient.NewAddress(c.ctx, &request) + if err != nil { + return "", err + } + return res.Address, nil +} + // GetInvoice takes an invoice ID and returns the invoice details including settlement details // An error is returned if no corresponding invoice was found. func (c LNDclient) GetInvoice(paymentHashStr string) (Invoice, error) { diff --git a/lnme.go b/lnme.go index f14a2b1..d346292 100644 --- a/lnme.go +++ b/lnme.go @@ -102,6 +102,15 @@ func main() { return c.JSON(http.StatusOK, invoice) }) + e.POST("/v1/newaddress", func(c echo.Context) error { + address, err := lnClient.NewAddress() + if err != nil { + stdOutLogger.Printf("Error getting a new BTC address: %s", err) + return c.JSON(http.StatusInternalServerError, "Error getting address") + } + return c.JSON(http.StatusOK, address) + }) + e.GET("/v1/invoice/:invoiceId", func(c echo.Context) error { invoiceId := c.Param("invoiceId") invoice, err := lnClient.GetInvoice(invoiceId)