lib/chainweb/pact/listen_request_body.ex
defmodule Kadena.Chainweb.Pact.ListenRequestBody do
@moduledoc """
`ListenRequestBody` struct definition.
"""
alias Kadena.Types.Base64Url
@behaviour Kadena.Chainweb.Type
@type listen :: Base64Url.t()
@type t :: %__MODULE__{listen: listen()}
defstruct [:listen]
@impl true
def new(%Base64Url{} = listen), do: %__MODULE__{listen: listen}
def new(listen) do
case Base64Url.new(listen) do
%Base64Url{} = listen -> %__MODULE__{listen: listen}
{:error, _reasons} -> {:error, [listen: :invalid]}
end
end
@impl true
def to_json!(%__MODULE__{listen: %Base64Url{url: listen}}) do
Jason.encode!(%{listen: listen})
end
end