go-nostr/nip19/pointer.go
fiatjaf 7e04bbb4b8 breaking pointer mess
- ExternalPointer (?)
- nip27, nip22 and nip10 functions to return pointers
- get rid of sdk/thread helpers that were just a thin layer over nip10 and nip22
2025-03-10 02:38:06 -03:00

50 lines
1.1 KiB
Go

package nip19
import (
"fmt"
"github.com/nbd-wtf/go-nostr"
)
func EncodePointer(pointer nostr.Pointer) string {
switch v := pointer.(type) {
case nostr.ProfilePointer:
if v.Relays == nil {
res, _ := EncodePublicKey(v.PublicKey)
return res
} else {
res, _ := EncodeProfile(v.PublicKey, v.Relays)
return res
}
case nostr.EventPointer:
res, _ := EncodeEvent(v.ID, v.Relays, v.Author)
return res
case nostr.EntityPointer:
res, _ := EncodeEntity(v.PublicKey, v.Kind, v.Identifier, v.Relays)
return res
}
return ""
}
func ToPointer(code string) (nostr.Pointer, error) {
prefix, data, err := Decode(code)
if err != nil {
return nil, err
}
switch prefix {
case "npub":
return nostr.ProfilePointer{PublicKey: data.(string)}, nil
case "nprofile":
return data.(nostr.ProfilePointer), nil
case "nevent":
return data.(nostr.EventPointer), nil
case "note":
return nostr.EventPointer{ID: data.(string)}, nil
case "naddr":
return data.(nostr.EntityPointer), nil
default:
return nil, fmt.Errorf("unexpected prefix '%s' to '%s'", prefix, code)
}
}