View Source NostrBasics.Filter (NostrBasics v0.1.6)

Details of a client subscription request to a relay

Link to this section Summary

Functions

Converts a JSON decoded encoded filter into a %Filter{}

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

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

decode(encoded_request, subscription_id)

View Source

Converts a JSON decoded encoded filter into a %Filter{}

examples

Examples

iex> %{
...>   "authors" => ["5ab9f2efb1fda6bc32696f6f3fd715e156346175b93b6382099d23627693c3f2"],
...>   "kinds" => [1],
...>   "limit" => 10
...> }
...> |> NostrBasics.Filter.decode("a_subscription_id")
%NostrBasics.Filter{
  subscription_id: "a_subscription_id",
  kinds: [1],
  authors: [<<0x5ab9f2efb1fda6bc32696f6f3fd715e156346175b93b6382099d23627693c3f2::256>>],
  limit: 10
}
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
  }
}
Link to this function

from_req!(req, subscription_id)

View Source
@spec from_req!(String.t(), String.t()) :: 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")
%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})
}