View Source NostrBasics.Filter (NostrBasics v0.0.4)

Details of a client subscription request to a relay

Link to this section Summary

Functions

Converts a NIP-01 JSON REQ string into a structured Filter

Converts a structured Filter into a NIP-01 JSON REQ string

Link to this section Types

@type t() :: %NostrBasics.Filter{
  authors: term(),
  e: term(),
  ids: term(),
  kinds: term(),
  limit: term(),
  p: term(),
  since: term(),
  subscription_id: term(),
  until: term()
}

Link to this section Functions

Link to this function

from_req(req, subscription_id)

View Source
@spec from_req(String.t(), String.t()) :: {:ok, t()} | {:error, String.t()}

Converts a NIP-01 JSON REQ string into a structured Filter

examples

Examples

iex> ~s({"authors":["5ab9f2efb1fda6bc32696f6f3fd715e156346175b93b6382099d23627693c3f2"],"kinds":[1],"limit":10})
...> |> NostrBasics.Filter.from_req("a_subscription_id")
{
  :ok,
  %NostrBasics.Filter{
    subscription_id: "a_subscription_id",
    kinds: [1],
    authors: [<<0x5ab9f2efb1fda6bc32696f6f3fd715e156346175b93b6382099d23627693c3f2::256>>],
    limit: 10
  }
}
@spec to_query(t()) :: {:ok, String.t()} | {:error, String.t()}

Converts a structured Filter into a NIP-01 JSON REQ string

examples

Examples

iex> %NostrBasics.Filter{
...>   subscription_id: "a_subscription_id",
...>   kinds: [1],
...>   authors: [<<0x5ab9f2efb1fda6bc32696f6f3fd715e156346175b93b6382099d23627693c3f2::256>>],
...>   limit: 10
...> }
...> |> NostrBasics.Filter.to_query
{
  :ok,
  ~s({"authors":["5ab9f2efb1fda6bc32696f6f3fd715e156346175b93b6382099d23627693c3f2"],"kinds":[1],"limit":10})
}