mirror of
https://github.com/muun/recovery.git
synced 2025-02-23 11:32:33 -05:00
40 lines
869 B
Go
40 lines
869 B
Go
|
package lnurl
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"net/url"
|
||
|
|
||
|
"github.com/tidwall/gjson"
|
||
|
)
|
||
|
|
||
|
type LNURLChannelResponse struct {
|
||
|
LNURLResponse
|
||
|
Tag string `json:"tag"`
|
||
|
K1 string `json:"k1"`
|
||
|
Callback string `json:"callback"`
|
||
|
CallbackURL *url.URL `json:"-"`
|
||
|
URI string `json:"uri"`
|
||
|
}
|
||
|
|
||
|
func (_ LNURLChannelResponse) LNURLKind() string { return "lnurl-channel" }
|
||
|
|
||
|
func HandleChannel(j gjson.Result) (LNURLParams, error) {
|
||
|
k1 := j.Get("k1").String()
|
||
|
if k1 == "" {
|
||
|
return nil, errors.New("k1 is blank")
|
||
|
}
|
||
|
callback := j.Get("callback").String()
|
||
|
callbackURL, err := url.Parse(callback)
|
||
|
if err != nil {
|
||
|
return nil, errors.New("callback is not a valid URL")
|
||
|
}
|
||
|
|
||
|
return LNURLChannelResponse{
|
||
|
Tag: "channelRequest",
|
||
|
K1: k1,
|
||
|
Callback: callback,
|
||
|
CallbackURL: callbackURL,
|
||
|
URI: j.Get("uri").String(),
|
||
|
}, nil
|
||
|
}
|