lib/refs.ex

defmodule MyspaceIPFS.Refs do
  # @moduledoc """
  # MyspaceIPFS.Refs is where the main commands of the IPFS API reside.
  # """

  import MyspaceIPFS.Api
  import MyspaceIPFS.Utils

  defstruct [
    :Ref,
    :Err
  ]

  @typedoc """
    Type for the response of entries in the refs list.

    ## Options
    https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-refs
  """
  @type t :: %__MODULE__{
          Ref: String.t(),
          Err: String.t()
        }

  @typep okmapped :: MyspaceIPFS.okmapped()
  @typep opts :: MyspaceIPFS.opts()
  @typep path :: MyspaceIPFS.path()

  @doc """
  Get a list of all local references.

  Response is a list of Refs.t().
  """
  @spec local :: okmapped
  def local,
    do:
      post_query("/refs/local")
      |> handle_plain_response()

  @doc """
  Get a list of all references from a given path.

  ## Options
  https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-refs
  """
  @spec refs(path, opts) :: okmapped
  def refs(path, opts \\ []),
    do:
      post_query("/refs?arg=" <> path, query: opts)
      |> handle_plain_response()
end