Nostr. Message
(Nostr Lib v0.2.1)
View Source
Nostr message is represented as tuple in Elixir. This module provides functions to generate messages, serialize or parse them.
Summary
Functions
Generate AUTH message (NIP-42).
Generate close message
Generate CLOSED message (NIP-01)
Generate count message (NIP-45).
Generate post new event message
Generate eose message
Generate event message
Generate negentropy close message (NIP-77)
Generate negentropy error message (NIP-77)
Generate negentropy message frame (NIP-77)
Generate negentropy open message (NIP-77)
Generate notice message
Generate OK message
Parse binary message to Elixir tuple, if message contains event it will be returned as general
Nostr.Event.t() struct.
Parse binary message to Elixir tuple, if message contains event it will be returned as specific
Nostr.Event.t() struct dependent of type of Event
Parse binary message to Elixir tuple and return structured parse errors.
Generate request message
Serialize Elixir tuple message to on-the-wire binary
Types
@type parse_reason() ::
:invalid_message_format
| :unsupported_json_escape
| :unsupported_json_literals
@type t() :: {:event, Nostr.Event.t()} | {:event, binary(), Nostr.Event.t()} | {:req, binary(), [Nostr.Filter.t()]} | {:close, binary()} | {:neg_open, binary(), Nostr.Filter.t(), binary()} | {:neg_msg, binary(), binary()} | {:neg_close, binary()} | {:neg_err, binary(), binary()} | {:eose, binary()} | {:notice, String.t()} | {:ok, binary(), boolean(), String.t()} | {:auth, Nostr.Event.t() | binary()} | {:count, String.t(), Nostr.Filter.t() | [Nostr.Filter.t()] | count_payload()} | {:closed, String.t(), String.t()}
Functions
@spec auth(Nostr.Event.t() | %{event: Nostr.Event.t()} | binary()) :: {:auth, Nostr.Event.t() | binary()}
Generate AUTH message (NIP-42).
Can be used by relay (with challenge string) or by client (with signed event).
Generate close message
Generate CLOSED message (NIP-01)
@spec count(pos_integer() | Nostr.Filter.t() | [Nostr.Filter.t()], binary()) :: {:count, binary(), count_payload() | Nostr.Filter.t() | [Nostr.Filter.t()]}
Generate count message (NIP-45).
Can be used to request counts from relay (with filters) or respond with counts (with integer).
Parsed COUNT responses preserve optional approximate and hll keys when present.
@spec create_event(Nostr.Event.t() | %{event: Nostr.Event.t()}) :: {:event, Nostr.Event.t()}
Generate post new event message
Generate eose message
@spec event(Nostr.Event.t() | %{event: Nostr.Event.t()}, binary()) :: {:event, binary(), Nostr.Event.t()}
Generate event message
Generate negentropy close message (NIP-77)
Generate negentropy error message (NIP-77)
Generate negentropy message frame (NIP-77)
@spec neg_open(binary(), Nostr.Filter.t(), binary()) :: {:neg_open, binary(), Nostr.Filter.t(), binary()}
Generate negentropy open message (NIP-77)
Generate notice message
Generate OK message
Parse binary message to Elixir tuple, if message contains event it will be returned as general
Nostr.Event.t() struct.
Returns :error for invalid payloads.
Parse binary message to Elixir tuple, if message contains event it will be returned as specific
Nostr.Event.t() struct dependent of type of Event
@spec parse_with_reason(String.t()) :: {:ok, t()} | {:error, parse_reason()}
Parse binary message to Elixir tuple and return structured parse errors.
The protocol-level parser in the relay uses this function to distinguish malformed JSON escape/literal cases from other parse failures.
@spec request(Nostr.Filter.t() | [Nostr.Filter.t()], binary()) :: {:req, binary(), [Nostr.Filter.t()]}
Generate request message
Serialize Elixir tuple message to on-the-wire binary