mirror of
https://github.com/nbd-wtf/go-nostr.git
synced 2025-06-30 10:30:44 +02:00
feat(kind): using constants
This commit is contained in:
@ -12,7 +12,7 @@ func TestCount(t *testing.T) {
|
|||||||
defer rl.Close()
|
defer rl.Close()
|
||||||
|
|
||||||
count, err := rl.Count(context.Background(), Filters{
|
count, err := rl.Count(context.Background(), Filters{
|
||||||
{Kinds: []int{3}, Tags: TagMap{"p": []string{"3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d"}}},
|
{Kinds: []int{KindContactList}, Tags: TagMap{"p": []string{"3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d"}}},
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("count request failed: %v", err)
|
t.Errorf("count request failed: %v", err)
|
||||||
|
@ -44,7 +44,7 @@ func TestEventSerialization(t *testing.T) {
|
|||||||
{
|
{
|
||||||
ID: "92570b321da503eac8014b23447301eb3d0bbdfbace0d11a4e4072e72bb7205d",
|
ID: "92570b321da503eac8014b23447301eb3d0bbdfbace0d11a4e4072e72bb7205d",
|
||||||
PubKey: "e9142f724955c5854de36324dab0434f97b15ec6b33464d56ebe491e3f559d1b",
|
PubKey: "e9142f724955c5854de36324dab0434f97b15ec6b33464d56ebe491e3f559d1b",
|
||||||
Kind: 4,
|
Kind: KindEncryptedDirectMessage,
|
||||||
CreatedAt: Timestamp(1671028682),
|
CreatedAt: Timestamp(1671028682),
|
||||||
Tags: Tags{Tag{"p", "f8340b2bde651576b75af61aa26c80e13c65029f00f7f64004eece679bf7059f"}},
|
Tags: Tags{Tag{"p", "f8340b2bde651576b75af61aa26c80e13c65029f00f7f64004eece679bf7059f"}},
|
||||||
Content: "you say yes, I say no",
|
Content: "you say yes, I say no",
|
||||||
@ -90,7 +90,7 @@ func TestEventSerializationWithExtraFields(t *testing.T) {
|
|||||||
evt := Event{
|
evt := Event{
|
||||||
ID: "92570b321da503eac8014b23447301eb3d0bbdfbace0d11a4e4072e72bb7205d",
|
ID: "92570b321da503eac8014b23447301eb3d0bbdfbace0d11a4e4072e72bb7205d",
|
||||||
PubKey: "e9142f724955c5854de36324dab0434f97b15ec6b33464d56ebe491e3f559d1b",
|
PubKey: "e9142f724955c5854de36324dab0434f97b15ec6b33464d56ebe491e3f559d1b",
|
||||||
Kind: 7,
|
Kind: KindReaction,
|
||||||
CreatedAt: Timestamp(1671028682),
|
CreatedAt: Timestamp(1671028682),
|
||||||
Content: "there is an extra field here",
|
Content: "there is an extra field here",
|
||||||
Sig: "ed08d2dd5b0f7b6a3cdc74643d4adee3158ddede9cc848e8cd97630c097001acc2d052d2d3ec2b7ac4708b2314b797106d1b3c107322e61b5e5cc2116e099b79",
|
Sig: "ed08d2dd5b0f7b6a3cdc74643d4adee3158ddede9cc848e8cd97630c097001acc2d052d2d3ec2b7ac4708b2314b797106d1b3c107322e61b5e5cc2116e099b79",
|
||||||
|
@ -41,7 +41,7 @@ func main() {
|
|||||||
// this filters for messages tagged with the user, mainly replies.
|
// this filters for messages tagged with the user, mainly replies.
|
||||||
t["p"] = []string{v.(string)}
|
t["p"] = []string{v.(string)}
|
||||||
filters = []nostr.Filter{{
|
filters = []nostr.Filter{{
|
||||||
Kinds: []int{1},
|
Kinds: []int{nostr.KindTextNote},
|
||||||
Tags: t,
|
Tags: t,
|
||||||
// limit = 3, get the three most recent notes
|
// limit = 3, get the three most recent notes
|
||||||
Limit: 3,
|
Limit: 3,
|
||||||
@ -102,7 +102,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ev.CreatedAt = nostr.Now()
|
ev.CreatedAt = nostr.Now()
|
||||||
ev.Kind = 1
|
ev.Kind = nostr.KindTextNote
|
||||||
var content string
|
var content string
|
||||||
fmt.Fprintln(os.Stderr, "enter content of note, ending with an empty newline (ctrl+d):")
|
fmt.Fprintln(os.Stderr, "enter content of note, ending with an empty newline (ctrl+d):")
|
||||||
for {
|
for {
|
||||||
|
@ -25,7 +25,7 @@ func TestFilterUnmarshal(t *testing.T) {
|
|||||||
func TestFilterMarshal(t *testing.T) {
|
func TestFilterMarshal(t *testing.T) {
|
||||||
until := Timestamp(12345678)
|
until := Timestamp(12345678)
|
||||||
filterj, err := json.Marshal(Filter{
|
filterj, err := json.Marshal(Filter{
|
||||||
Kinds: []int{1, 2, 4},
|
Kinds: []int{KindTextNote, KindRecommendServer, KindEncryptedDirectMessage},
|
||||||
Tags: TagMap{"fruit": {"banana", "mango"}},
|
Tags: TagMap{"fruit": {"banana", "mango"}},
|
||||||
Until: &until,
|
Until: &until,
|
||||||
})
|
})
|
||||||
@ -53,15 +53,15 @@ func TestFilterMatchingLive(t *testing.T) {
|
|||||||
|
|
||||||
func TestFilterEquality(t *testing.T) {
|
func TestFilterEquality(t *testing.T) {
|
||||||
if !FilterEqual(
|
if !FilterEqual(
|
||||||
Filter{Kinds: []int{4, 5}},
|
Filter{Kinds: []int{KindEncryptedDirectMessage, KindDeletion}},
|
||||||
Filter{Kinds: []int{4, 5}},
|
Filter{Kinds: []int{KindEncryptedDirectMessage, KindDeletion}},
|
||||||
) {
|
) {
|
||||||
t.Error("kinds filters should be equal")
|
t.Error("kinds filters should be equal")
|
||||||
}
|
}
|
||||||
|
|
||||||
if !FilterEqual(
|
if !FilterEqual(
|
||||||
Filter{Kinds: []int{4, 5}, Tags: TagMap{"letter": {"a", "b"}}},
|
Filter{Kinds: []int{KindEncryptedDirectMessage, KindDeletion}, Tags: TagMap{"letter": {"a", "b"}}},
|
||||||
Filter{Kinds: []int{4, 5}, Tags: TagMap{"letter": {"b", "a"}}},
|
Filter{Kinds: []int{KindEncryptedDirectMessage, KindDeletion}, Tags: TagMap{"letter": {"b", "a"}}},
|
||||||
) {
|
) {
|
||||||
t.Error("kind+tags filters should be equal")
|
t.Error("kind+tags filters should be equal")
|
||||||
}
|
}
|
||||||
@ -69,13 +69,13 @@ func TestFilterEquality(t *testing.T) {
|
|||||||
tm := Now()
|
tm := Now()
|
||||||
if !FilterEqual(
|
if !FilterEqual(
|
||||||
Filter{
|
Filter{
|
||||||
Kinds: []int{4, 5},
|
Kinds: []int{KindEncryptedDirectMessage, KindDeletion},
|
||||||
Tags: TagMap{"letter": {"a", "b"}, "fruit": {"banana"}},
|
Tags: TagMap{"letter": {"a", "b"}, "fruit": {"banana"}},
|
||||||
Since: &tm,
|
Since: &tm,
|
||||||
IDs: []string{"aaaa", "bbbb"},
|
IDs: []string{"aaaa", "bbbb"},
|
||||||
},
|
},
|
||||||
Filter{
|
Filter{
|
||||||
Kinds: []int{5, 4},
|
Kinds: []int{KindDeletion, KindEncryptedDirectMessage},
|
||||||
Tags: TagMap{"letter": {"a", "b"}, "fruit": {"banana"}},
|
Tags: TagMap{"letter": {"a", "b"}, "fruit": {"banana"}},
|
||||||
Since: &tm,
|
Since: &tm,
|
||||||
IDs: []string{"aaaa", "bbbb"},
|
IDs: []string{"aaaa", "bbbb"},
|
||||||
@ -85,8 +85,8 @@ func TestFilterEquality(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if FilterEqual(
|
if FilterEqual(
|
||||||
Filter{Kinds: []int{1, 4, 5}},
|
Filter{Kinds: []int{KindTextNote, KindEncryptedDirectMessage, KindDeletion}},
|
||||||
Filter{Kinds: []int{4, 5, 6}},
|
Filter{Kinds: []int{KindEncryptedDirectMessage, KindDeletion, KindRepost}},
|
||||||
) {
|
) {
|
||||||
t.Error("kinds filters shouldn't be equal")
|
t.Error("kinds filters shouldn't be equal")
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,7 @@ func TestCheck(t *testing.T) {
|
|||||||
|
|
||||||
func TestGenerateShort(t *testing.T) {
|
func TestGenerateShort(t *testing.T) {
|
||||||
event := &nostr.Event{
|
event := &nostr.Event{
|
||||||
Kind: 1,
|
Kind: nostr.KindTextNote,
|
||||||
Content: "It's just me mining my own business",
|
Content: "It's just me mining my own business",
|
||||||
PubKey: "a48380f4cfcc1ad5378294fcac36439770f9c878dd880ffa94bb74ea54a6f243",
|
PubKey: "a48380f4cfcc1ad5378294fcac36439770f9c878dd880ffa94bb74ea54a6f243",
|
||||||
}
|
}
|
||||||
@ -53,7 +53,7 @@ func TestGenerateLong(t *testing.T) {
|
|||||||
t.Run(fmt.Sprintf("%dbits", difficulty), func(t *testing.T) {
|
t.Run(fmt.Sprintf("%dbits", difficulty), func(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
event := &nostr.Event{
|
event := &nostr.Event{
|
||||||
Kind: 1,
|
Kind: nostr.KindTextNote,
|
||||||
Content: "It's just me mining my own business",
|
Content: "It's just me mining my own business",
|
||||||
PubKey: "a48380f4cfcc1ad5378294fcac36439770f9c878dd880ffa94bb74ea54a6f243",
|
PubKey: "a48380f4cfcc1ad5378294fcac36439770f9c878dd880ffa94bb74ea54a6f243",
|
||||||
}
|
}
|
||||||
@ -89,7 +89,7 @@ func testNonceTag(t *testing.T, event *nostr.Event, commitment int) {
|
|||||||
|
|
||||||
func TestGenerateTimeout(t *testing.T) {
|
func TestGenerateTimeout(t *testing.T) {
|
||||||
event := &nostr.Event{
|
event := &nostr.Event{
|
||||||
Kind: 1,
|
Kind: nostr.KindTextNote,
|
||||||
Content: "It's just me mining my own business",
|
Content: "It's just me mining my own business",
|
||||||
PubKey: "a48380f4cfcc1ad5378294fcac36439770f9c878dd880ffa94bb74ea54a6f243",
|
PubKey: "a48380f4cfcc1ad5378294fcac36439770f9c878dd880ffa94bb74ea54a6f243",
|
||||||
}
|
}
|
||||||
@ -117,7 +117,7 @@ func BenchmarkCheck(b *testing.B) {
|
|||||||
func BenchmarkGenerateOneIteration(b *testing.B) {
|
func BenchmarkGenerateOneIteration(b *testing.B) {
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
event := &nostr.Event{
|
event := &nostr.Event{
|
||||||
Kind: 1,
|
Kind: nostr.KindTextNote,
|
||||||
Content: "It's just me mining my own business",
|
Content: "It's just me mining my own business",
|
||||||
PubKey: "a48380f4cfcc1ad5378294fcac36439770f9c878dd880ffa94bb74ea54a6f243",
|
PubKey: "a48380f4cfcc1ad5378294fcac36439770f9c878dd880ffa94bb74ea54a6f243",
|
||||||
}
|
}
|
||||||
@ -136,7 +136,7 @@ func BenchmarkGenerate(b *testing.B) {
|
|||||||
b.Run(fmt.Sprintf("%dbits", difficulty), func(b *testing.B) {
|
b.Run(fmt.Sprintf("%dbits", difficulty), func(b *testing.B) {
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
event := &nostr.Event{
|
event := &nostr.Event{
|
||||||
Kind: 1,
|
Kind: nostr.KindTextNote,
|
||||||
Content: "It's just me mining my own business",
|
Content: "It's just me mining my own business",
|
||||||
PubKey: "a48380f4cfcc1ad5378294fcac36439770f9c878dd880ffa94bb74ea54a6f243",
|
PubKey: "a48380f4cfcc1ad5378294fcac36439770f9c878dd880ffa94bb74ea54a6f243",
|
||||||
}
|
}
|
||||||
|
@ -112,7 +112,7 @@ func TestEncodeNprofile(t *testing.T) {
|
|||||||
func TestEncodeDecodeNaddr(t *testing.T) {
|
func TestEncodeDecodeNaddr(t *testing.T) {
|
||||||
naddr, err := EncodeEntity(
|
naddr, err := EncodeEntity(
|
||||||
"3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d",
|
"3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d",
|
||||||
30023,
|
nostr.KindArticle,
|
||||||
"banana",
|
"banana",
|
||||||
[]string{
|
[]string{
|
||||||
"wss://relay.nostr.example.mydomain.example.com",
|
"wss://relay.nostr.example.mydomain.example.com",
|
||||||
@ -136,7 +136,7 @@ func TestEncodeDecodeNaddr(t *testing.T) {
|
|||||||
if ep.PublicKey != "3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d" {
|
if ep.PublicKey != "3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d" {
|
||||||
t.Error("returned wrong pubkey")
|
t.Error("returned wrong pubkey")
|
||||||
}
|
}
|
||||||
if ep.Kind != 30023 {
|
if ep.Kind != nostr.KindArticle {
|
||||||
t.Error("returned wrong kind")
|
t.Error("returned wrong kind")
|
||||||
}
|
}
|
||||||
if ep.Identifier != "banana" {
|
if ep.Identifier != "banana" {
|
||||||
@ -159,7 +159,7 @@ func TestDecodeNaddrWithoutRelays(t *testing.T) {
|
|||||||
if ep.PublicKey != "7fa56f5d6962ab1e3cd424e758c3002b8665f7b0d8dcee9fe9e288d7751ac194" {
|
if ep.PublicKey != "7fa56f5d6962ab1e3cd424e758c3002b8665f7b0d8dcee9fe9e288d7751ac194" {
|
||||||
t.Error("returned wrong pubkey")
|
t.Error("returned wrong pubkey")
|
||||||
}
|
}
|
||||||
if ep.Kind != 30023 {
|
if ep.Kind != nostr.KindArticle {
|
||||||
t.Error("returned wrong kind")
|
t.Error("returned wrong kind")
|
||||||
}
|
}
|
||||||
if ep.Identifier != "references" {
|
if ep.Identifier != "references" {
|
||||||
|
@ -19,7 +19,7 @@ func TestDelegateSign(t *testing.T) {
|
|||||||
ev := &nostr.Event{}
|
ev := &nostr.Event{}
|
||||||
ev.CreatedAt = nostr.Timestamp(1600000050)
|
ev.CreatedAt = nostr.Timestamp(1600000050)
|
||||||
ev.Content = "hello world"
|
ev.Content = "hello world"
|
||||||
ev.Kind = 1
|
ev.Kind = nostr.KindTextNote
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ func CreateUnsignedAuthEvent(challenge, pubkey, relayURL string) nostr.Event {
|
|||||||
return nostr.Event{
|
return nostr.Event{
|
||||||
PubKey: pubkey,
|
PubKey: pubkey,
|
||||||
CreatedAt: nostr.Now(),
|
CreatedAt: nostr.Now(),
|
||||||
Kind: 22242,
|
Kind: nostr.KindClientAuthentication,
|
||||||
Tags: nostr.Tags{
|
Tags: nostr.Tags{
|
||||||
nostr.Tag{"relay", relayURL},
|
nostr.Tag{"relay", relayURL},
|
||||||
nostr.Tag{"challenge", challenge},
|
nostr.Tag{"challenge", challenge},
|
||||||
@ -35,7 +35,7 @@ func parseURL(input string) (*url.URL, error) {
|
|||||||
// ValidateAuthEvent checks whether event is a valid NIP-42 event for given challenge and relayURL.
|
// ValidateAuthEvent checks whether event is a valid NIP-42 event for given challenge and relayURL.
|
||||||
// The result of the validation is encoded in the ok bool.
|
// The result of the validation is encoded in the ok bool.
|
||||||
func ValidateAuthEvent(event *nostr.Event, challenge string, relayURL string) (pubkey string, ok bool) {
|
func ValidateAuthEvent(event *nostr.Event, challenge string, relayURL string) (pubkey string, ok bool) {
|
||||||
if event.Kind != 22242 {
|
if event.Kind != nostr.KindClientAuthentication {
|
||||||
return "", false
|
return "", false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2
relay.go
2
relay.go
@ -93,7 +93,7 @@ func NewRelay(ctx context.Context, url string, opts ...RelayOption) *Relay {
|
|||||||
for challenge := range r.challenges {
|
for challenge := range r.challenges {
|
||||||
authEvent := Event{
|
authEvent := Event{
|
||||||
CreatedAt: Now(),
|
CreatedAt: Now(),
|
||||||
Kind: 22242,
|
Kind: KindClientAuthentication,
|
||||||
Tags: Tags{
|
Tags: Tags{
|
||||||
Tag{"relay", url},
|
Tag{"relay", url},
|
||||||
Tag{"challenge", challenge},
|
Tag{"challenge", challenge},
|
||||||
|
@ -19,7 +19,7 @@ func TestPublish(t *testing.T) {
|
|||||||
// test note to be sent over websocket
|
// test note to be sent over websocket
|
||||||
priv, pub := makeKeyPair(t)
|
priv, pub := makeKeyPair(t)
|
||||||
textNote := Event{
|
textNote := Event{
|
||||||
Kind: 1,
|
Kind: KindTextNote,
|
||||||
Content: "hello",
|
Content: "hello",
|
||||||
CreatedAt: Timestamp(1672068534), // random fixed timestamp
|
CreatedAt: Timestamp(1672068534), // random fixed timestamp
|
||||||
Tags: Tags{[]string{"foo", "bar"}},
|
Tags: Tags{[]string{"foo", "bar"}},
|
||||||
@ -67,7 +67,7 @@ func TestPublish(t *testing.T) {
|
|||||||
|
|
||||||
func TestPublishBlocked(t *testing.T) {
|
func TestPublishBlocked(t *testing.T) {
|
||||||
// test note to be sent over websocket
|
// test note to be sent over websocket
|
||||||
textNote := Event{Kind: 1, Content: "hello"}
|
textNote := Event{Kind: KindTextNote, Content: "hello"}
|
||||||
textNote.ID = textNote.GetID()
|
textNote.ID = textNote.GetID()
|
||||||
|
|
||||||
// fake relay server
|
// fake relay server
|
||||||
@ -93,7 +93,7 @@ func TestPublishBlocked(t *testing.T) {
|
|||||||
|
|
||||||
func TestPublishWriteFailed(t *testing.T) {
|
func TestPublishWriteFailed(t *testing.T) {
|
||||||
// test note to be sent over websocket
|
// test note to be sent over websocket
|
||||||
textNote := Event{Kind: 1, Content: "hello"}
|
textNote := Event{Kind: KindTextNote, Content: "hello"}
|
||||||
textNote.ID = textNote.GetID()
|
textNote.ID = textNote.GetID()
|
||||||
|
|
||||||
// fake relay server
|
// fake relay server
|
||||||
|
@ -27,7 +27,10 @@ func FetchRelaysForPubkey(ctx context.Context, pool *nostr.SimplePool, pubkey st
|
|||||||
|
|
||||||
ch := pool.SubManyEose(ctx, relays, nostr.Filters{
|
ch := pool.SubManyEose(ctx, relays, nostr.Filters{
|
||||||
{
|
{
|
||||||
Kinds: []int{10002, 3},
|
Kinds: []int{
|
||||||
|
nostr.KindRelayListMetadata,
|
||||||
|
nostr.KindContactList,
|
||||||
|
},
|
||||||
Authors: []string{pubkey},
|
Authors: []string{pubkey},
|
||||||
Limit: 2,
|
Limit: 2,
|
||||||
},
|
},
|
||||||
@ -37,9 +40,9 @@ func FetchRelaysForPubkey(ctx context.Context, pool *nostr.SimplePool, pubkey st
|
|||||||
i := 0
|
i := 0
|
||||||
for event := range ch {
|
for event := range ch {
|
||||||
switch event.Kind {
|
switch event.Kind {
|
||||||
case 10002:
|
case nostr.KindRelayListMetadata:
|
||||||
result = append(result, ParseRelaysFromKind10002(event)...)
|
result = append(result, ParseRelaysFromKind10002(event)...)
|
||||||
case 3:
|
case nostr.KindContactList:
|
||||||
result = append(result, ParseRelaysFromKind3(event)...)
|
result = append(result, ParseRelaysFromKind3(event)...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ func TestSubscribe(t *testing.T) {
|
|||||||
rl := mustRelayConnect(RELAY)
|
rl := mustRelayConnect(RELAY)
|
||||||
defer rl.Close()
|
defer rl.Close()
|
||||||
|
|
||||||
sub, err := rl.Subscribe(context.Background(), Filters{{Kinds: []int{1}, Limit: 2}})
|
sub, err := rl.Subscribe(context.Background(), Filters{{Kinds: []int{KindTextNote}, Limit: 2}})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("subscription failed: %v", err)
|
t.Errorf("subscription failed: %v", err)
|
||||||
return
|
return
|
||||||
@ -56,7 +56,7 @@ func TestNestedSubscriptions(t *testing.T) {
|
|||||||
n := atomic.Uint32{}
|
n := atomic.Uint32{}
|
||||||
|
|
||||||
// fetch 2 replies to a note
|
// fetch 2 replies to a note
|
||||||
sub, err := rl.Subscribe(context.Background(), Filters{{Kinds: []int{1}, Tags: TagMap{"e": []string{"0e34a74f8547e3b95d52a2543719b109fd0312aba144e2ef95cba043f42fe8c5"}}, Limit: 3}})
|
sub, err := rl.Subscribe(context.Background(), Filters{{Kinds: []int{KindTextNote}, Tags: TagMap{"e": []string{"0e34a74f8547e3b95d52a2543719b109fd0312aba144e2ef95cba043f42fe8c5"}}, Limit: 3}})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("subscription 1 failed: %v", err)
|
t.Errorf("subscription 1 failed: %v", err)
|
||||||
return
|
return
|
||||||
@ -66,7 +66,7 @@ func TestNestedSubscriptions(t *testing.T) {
|
|||||||
select {
|
select {
|
||||||
case event := <-sub.Events:
|
case event := <-sub.Events:
|
||||||
// now fetch author of this
|
// now fetch author of this
|
||||||
sub, err := rl.Subscribe(context.Background(), Filters{{Kinds: []int{0}, Authors: []string{event.PubKey}, Limit: 1}})
|
sub, err := rl.Subscribe(context.Background(), Filters{{Kinds: []int{KindSetMetadata}, Authors: []string{event.PubKey}, Limit: 1}})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("subscription 2 failed: %v", err)
|
t.Errorf("subscription 2 failed: %v", err)
|
||||||
return
|
return
|
||||||
|
Reference in New Issue
Block a user