From 6b43c3f6aa8aefaabce4d1fa4043fa0e6c5d936b Mon Sep 17 00:00:00 2001 From: Peter Rounce Date: Fri, 16 Sep 2022 02:44:00 +0000 Subject: [PATCH] separate lnurlp code --- lnurlp_request.go | 96 +++++++++++++++++++++++++++++++++++++++++++++++ main.go | 88 ------------------------------------------- 2 files changed, 96 insertions(+), 88 deletions(-) create mode 100644 lnurlp_request.go diff --git a/lnurlp_request.go b/lnurlp_request.go new file mode 100644 index 0000000..9d8c7ce --- /dev/null +++ b/lnurlp_request.go @@ -0,0 +1,96 @@ +package main + +import ( + "os" + log "github.com/sirupsen/logrus" + "github.com/gorilla/mux" + "net/http" + "strconv" +) + +func lnurlp_response(w http.ResponseWriter, r *http.Request) { + name := mux.Vars(r)["name"] + + log.WithFields( + log.Fields{ + "url_path": r.URL.Path, + "name": name, + "r.Host": r.Host, + },).Info("lnurlp_response") + +// look up domain in env vars (HOST_DOMAIN) + + domain := os.Getenv("HOST_DOMAIN") + if r.Host != domain { + log.Warn("wrong host domain") + write_error(w) + return + } + +// look up name in database (table cards, field card_name) + + card_count, err := db_get_card_count_for_name(name) + if err != nil { + log.Warn("could not get card count for name") + write_error(w) + return + } + + if card_count != 1 { + log.Info("not one card with that name") + write_error(w) + return + } + + metadata := "[[\\\"text/identifier\\\",\\\"" + name + "@" + domain + "\\\"],[\\\"text/plain\\\",\\\"" + name + "@" + domain + "\\\"]]" + + jsonData := []byte(`{"status":"OK",` + + `"callback":"https://` + domain + `/lnurlp/` + name + `",` + + `"tag":"payRequest",` + + `"maxSendable":1000000000,` + + `"minSendable":1000,` + + `"metadata":"` + metadata + `",` + + `"commentAllowed":0` + + `}`) + + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Write(jsonData) +} + +func lnurlp_callback(w http.ResponseWriter, r *http.Request) { + name := mux.Vars(r)["name"] + amount := r.URL.Query().Get("amount"); + + log.WithFields( + log.Fields{ + "url_path": r.URL.Path, + "name": name, + "amount": amount, + "req.Host": r.Host, + },).Info("lnurlp_callback") + + domain := os.Getenv("HOST_DOMAIN") + if r.Host != domain { + log.Warn("wrong host domain") + write_error(w) + return + } + +//TODO add err + amount_msat, _ := strconv.ParseInt(amount, 10, 64) + amount_sat := amount_msat / 1000; + +//TODO add err + metadata := "[[\"text/identifier\",\"" + name + "@" + domain + "\"],[\"text/plain\",\"" + name + "@" + domain + "\"]]" + pr, _ := add_invoice(amount_sat, metadata) + + jsonData := []byte(`{` + + `"status":"OK","successAction":{"tag":"message","message":"Payment success!"}` + + `,"routes":[],"pr":"` + pr + `","disposable":false` + + `}`) + + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Write(jsonData) +} diff --git a/main.go b/main.go index 48c535d..da954a5 100644 --- a/main.go +++ b/main.go @@ -6,7 +6,6 @@ import ( "net/http" "time" "os" - "strconv" ) var router = mux.NewRouter() @@ -25,93 +24,6 @@ func write_error_message(w http.ResponseWriter, message string) { w.Write(jsonData) } -func lnurlp_response(w http.ResponseWriter, r *http.Request) { - name := mux.Vars(r)["name"] - - log.WithFields( - log.Fields{ - "url_path": r.URL.Path, - "name": name, - "r.Host": r.Host, - },).Info("lnurlp_response") - -// look up domain in env vars (HOST_DOMAIN) - - domain := os.Getenv("HOST_DOMAIN") - if r.Host != domain { - log.Warn("wrong host domain") - write_error(w) - return - } - -// look up name in database (table cards, field card_name) - - card_count, err := db_get_card_count_for_name(name) - if err != nil { - log.Warn("could not get card count for name") - write_error(w) - return - } - - if card_count != 1 { - log.Info("not one card with that name") - write_error(w) - return - } - - metadata := "[[\\\"text/identifier\\\",\\\"" + name + "@" + domain + "\\\"],[\\\"text/plain\\\",\\\"" + name + "@" + domain + "\\\"]]" - - jsonData := []byte(`{"status":"OK",` + - `"callback":"https://` + domain + `/lnurlp/` + name + `",` + - `"tag":"payRequest",` + - `"maxSendable":1000000000,` + - `"minSendable":1000,` + - `"metadata":"` + metadata + `",` + - `"commentAllowed":0` + - `}`) - - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(http.StatusOK) - w.Write(jsonData) -} - -func lnurlp_callback(w http.ResponseWriter, r *http.Request) { - name := mux.Vars(r)["name"] - amount := r.URL.Query().Get("amount"); - - log.WithFields( - log.Fields{ - "url_path": r.URL.Path, - "name": name, - "amount": amount, - "req.Host": r.Host, - },).Info("lnurlp_callback") - - domain := os.Getenv("HOST_DOMAIN") - if r.Host != domain { - log.Warn("wrong host domain") - write_error(w) - return - } - -//TODO add err - amount_msat, _ := strconv.ParseInt(amount, 10, 64) - amount_sat := amount_msat / 1000; - -//TODO add err - metadata := "[[\"text/identifier\",\"" + name + "@" + domain + "\"],[\"text/plain\",\"" + name + "@" + domain + "\"]]" - pr, _ := add_invoice(amount_sat, metadata) - - jsonData := []byte(`{` + - `"status":"OK","successAction":{"tag":"message","message":"Payment success!"}` + - `,"routes":[],"pr":"` + pr + `","disposable":false` + - `}`) - - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(http.StatusOK) - w.Write(jsonData) -} - func main() { log_level := os.Getenv("LOG_LEVEL")