diff --git a/nip11/types.go b/nip11/types.go index 0b150b9..0dbd1c0 100644 --- a/nip11/types.go +++ b/nip11/types.go @@ -8,4 +8,43 @@ type RelayInformationDocument struct { SupportedNIPs []int `json:"supported_nips"` Software string `json:"software"` Version string `json:"version"` + + Limitation *RelayLimitationDocument `json:"limitation,omitempty"` + RelayCountries []string `json:"relay_countries,omitempty"` + LanguageTags []string `json:"language_tags,omitempty"` + Tags []string `json:"tags,omitempty"` + PostingPolicy string `json:"posting_policy,omitempty"` + PaymentsURL string `json:"payments_url,omitempty"` + Fees *RelayFeesDocument `json:"fees,omitempty"` +} + +type RelayLimitationDocument struct { + MaxMessageLength int `json:"max_message_length,omitempty"` + MaxSubscriptions int `json:"max_subscriptions,omitempty"` + MaxFilters int `json:"max_filters,omitempty"` + MaxLimit int `json:"max_limit,omitempty"` + MaxSubidLength int `json:"max_subid_length,omitempty"` + MinPrefix int `json:"min_prefix,omitempty"` + MaxEventTags int `json:"max_event_tags,omitempty"` + MaxContentLength int `json:"max_content_length,omitempty"` + MinPowDifficulty int `json:"min_pow_difficulty,omitempty"` + AuthRequired bool `json:"auth_required"` + PaymentRequired bool `json:"payment_required"` +} + +type RelayFeesDocument struct { + Admission []struct { + Amount int `json:"amount"` + Unit string `json:"unit"` + } `json:"admission,omitempty"` + Subscription []struct { + Amount int `json:"amount"` + Unit string `json:"unit"` + Period int `json:"period"` + } `json:"subscription,omitempty"` + Publication []struct { + Kinds []int `json:"kinds"` + Amount int `json:"amount"` + Unit string `json:"unit"` + } `json:"publication,omitempty"` } diff --git a/relay_test.go b/relay_test.go index 287505d..1436811 100644 --- a/relay_test.go +++ b/relay_test.go @@ -105,9 +105,11 @@ func TestPublishWriteFailed(t *testing.T) { // connect a client and send a text note rl := mustRelayConnect(ws.URL) - status, _ := rl.Publish(context.Background(), textNote) + // Force brief period of time so that publish always fails on closed socket. + time.Sleep(1 * time.Millisecond) + status, err := rl.Publish(context.Background(), textNote) if status != PublishStatusFailed { - t.Errorf("published status is %d, not %d", status, PublishStatusFailed) + t.Errorf("published status is %d, not %d, err: %v", status, PublishStatusFailed, err) } }