Skip to content

Commit

Permalink
nip11's info.AddSupportedNIP()
Browse files Browse the repository at this point in the history
  • Loading branch information
fiatjaf committed Nov 18, 2023
1 parent fe32ecd commit b33fe37
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 0 deletions.
30 changes: 30 additions & 0 deletions nip11/nip11_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package nip11

import "testing"

func TestAddSupportedNIP(t *testing.T) {
info := RelayInformationDocument{}
info.AddSupportedNIP(12)
info.AddSupportedNIP(12)
info.AddSupportedNIP(13)
info.AddSupportedNIP(1)
info.AddSupportedNIP(12)
info.AddSupportedNIP(44)
info.AddSupportedNIP(2)
info.AddSupportedNIP(13)
info.AddSupportedNIP(2)
info.AddSupportedNIP(13)
info.AddSupportedNIP(0)
info.AddSupportedNIP(17)
info.AddSupportedNIP(19)
info.AddSupportedNIP(1)
info.AddSupportedNIP(18)

for i, v := range []int{0, 1, 2, 12, 13, 17, 18, 19, 44} {
if info.SupportedNIPs[i] != v {
t.Errorf("expected info.SupportedNIPs[%d] to equal %v, got %v",
i, v, info.SupportedNIPs)
return
}
}
}
13 changes: 13 additions & 0 deletions nip11/types.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package nip11

import "golang.org/x/exp/slices"

type RelayInformationDocument struct {
Name string `json:"name"`
Description string `json:"description"`
Expand All @@ -19,6 +21,17 @@ type RelayInformationDocument struct {
Icon string `json:"icon"`
}

func (info *RelayInformationDocument) AddSupportedNIP(number int) {
idx, exists := slices.BinarySearch(info.SupportedNIPs, number)
if exists {
return
}

info.SupportedNIPs = append(info.SupportedNIPs, -1)
copy(info.SupportedNIPs[idx+1:], info.SupportedNIPs[idx:])
info.SupportedNIPs[idx] = number
}

type RelayLimitationDocument struct {
MaxMessageLength int `json:"max_message_length,omitempty"`
MaxSubscriptions int `json:"max_subscriptions,omitempty"`
Expand Down

0 comments on commit b33fe37

Please sign in to comment.