From c5554cb9ca08368bf60e165850c239d50f655519 Mon Sep 17 00:00:00 2001 From: ekzyis Date: Fri, 27 Dec 2024 01:52:47 +0100 Subject: [PATCH] wip: phoenixd webhook --- lightning/phoenixd/phoenixd.go | 16 ++++++++++++++++ server/server.go | 12 ++++++++++++ 2 files changed, 28 insertions(+) diff --git a/lightning/phoenixd/phoenixd.go b/lightning/phoenixd/phoenixd.go index 7f0ca99..a8b391a 100644 --- a/lightning/phoenixd/phoenixd.go +++ b/lightning/phoenixd/phoenixd.go @@ -11,6 +11,7 @@ import ( "strings" "github.com/ekzyis/zaply/lightning" + "github.com/labstack/echo/v4" ) type Phoenixd struct { @@ -96,3 +97,18 @@ func (p *Phoenixd) CreateInvoice(msats int64, description string) (lightning.Bol return lightning.Bolt11(response.Serialized), nil } + +func WebhookHandler(c echo.Context) error { + var webhook struct { + Type string `json:"type"` + AmountSat int64 `json:"amountSat"` + PaymentHash string `json:"paymentHash"` + } + if err := c.Bind(&webhook); err != nil { + return err + } + + log.Printf("webhook: %+v", webhook) + + return c.NoContent(http.StatusOK) +} diff --git a/server/server.go b/server/server.go index aa7c94e..88e03a0 100644 --- a/server/server.go +++ b/server/server.go @@ -1,6 +1,9 @@ package server import ( + "log" + "net/url" + "github.com/ekzyis/zaply/env" "github.com/ekzyis/zaply/lightning/phoenixd" "github.com/ekzyis/zaply/lnurl" @@ -22,11 +25,20 @@ func NewServer() *Server { CustomTimeFormat: "2006-01-02 15:04:05.00000-0700", })) + webhookPath := "/overlay/webhook" + webhookUrl, err := url.JoinPath(env.PublicUrl, webhookPath) + if err != nil { + log.Fatal(err) + } + p := phoenixd.NewPhoenixd( phoenixd.WithPhoenixdURL(env.PhoenixdURL), phoenixd.WithPhoenixdLimitedAccessToken(env.PhoenixdLimitedAccessToken), + phoenixd.WithPhoenixdWebhookUrl(webhookUrl), ) + s.POST(webhookPath, phoenixd.WebhookHandler) + lnurl.Router(s.Echo, p) return s