package lnd import ( "context" b64 "encoding/base64" "encoding/hex" "errors" "fmt" "strconv" "git.minhas.io/asara/well-goknown/config" "git.minhas.io/asara/well-goknown/logger" "github.com/davecgh/go-spew/spew" "github.com/lightninglabs/lndclient" "github.com/lightningnetwork/lnd/lnrpc" ) func Request(rKey string, request []byte) (string, error) { l := logger.Get() ctx := context.TODO() // connect to lnd // TODO: move to its own function and don't connect on every request macaroon := config.GetConfig().LndMacaroonHex addr := config.GetConfig().LndAddr dec, _ := b64.StdEncoding.DecodeString(config.GetConfig().LndCertB64) lndCert := string(dec) lndCli, err := lndclient.NewBasicClient(addr, "", "", "bitcoind", lndclient.MacaroonData(macaroon), lndclient.TLSData(lndCert)) if err != nil { l.Fatal().Msg("unable to connect to lnd") } // add invoice addrFee, err := strconv.ParseInt(config.GetConfig().NostrAddrFee, 10, 64) if err != nil { l.Fatal().Msg("nostr address fee not set properlly") return "", errors.New("nostr address fee not set properly") } info, err := lndCli.AddInvoice(ctx, &lnrpc.Invoice{ Memo: fmt.Sprintf("nostr addr %s", rKey), Expiry: 1 * 60, Value: addrFee, }) if err != nil { l.Fatal().Msg("unable to create lnd invoice") } spew.Dump(hex.EncodeToString(info.RHash)) spew.Dump(info.PaymentRequest) spew.Dump(request) return "x", nil }