mirror of
https://github.com/muun/recovery.git
synced 2025-02-23 03:22:31 -05:00
40 lines
817 B
Go
40 lines
817 B
Go
|
package lnurl
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
// LNURLDecode takes a bech32-encoded lnurl string and returns a plain-text https URL.
|
||
|
func LNURLDecode(lnurl string) (url string, err error) {
|
||
|
tag, data, err := Decode(lnurl)
|
||
|
if err != nil {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if tag != "lnurl" {
|
||
|
err = errors.New("tag is not 'lnurl', but '" + tag + "'")
|
||
|
return
|
||
|
}
|
||
|
|
||
|
converted, err := ConvertBits(data, 5, 8, false)
|
||
|
if err != nil {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
url = string(converted)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// LNURLEncode takes a plain-text https URL and returns a bech32-encoded uppercased lnurl string.
|
||
|
func LNURLEncode(actualurl string) (lnurl string, err error) {
|
||
|
asbytes := []byte(actualurl)
|
||
|
converted, err := ConvertBits(asbytes, 8, 5, true)
|
||
|
if err != nil {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
lnurl, err = Encode("lnurl", converted)
|
||
|
return strings.ToUpper(lnurl), err
|
||
|
}
|