lib/api/network/swarm.ex

defmodule MyspaceIPFS.Api.Network.Swarm do
  @moduledoc """
  MyspaceIPFS.Api.Swarm is where the swarm commands of the IPFS API reside.
  """

  import MyspaceIPFS.Utils

  @spec peers :: {:client_error | :forbidden | :missing | :not_allowed | :ok | :server_error, any}
  def peers, do: request_get("/swarm/peers")

  @spec addrs :: {:client_error | :forbidden | :missing | :not_allowed | :ok | :server_error, any}
  def addrs, do: request_get("/swarm/addrs")

  @spec addrs_listen ::
          {:client_error | :forbidden | :missing | :not_allowed | :ok | :server_error, any}
  def addrs_listen, do: request_get("/swarm/addrs/listen")

  @spec addrs_local ::
          {:client_error | :forbidden | :missing | :not_allowed | :ok | :server_error, any}
  def addrs_local, do: request_get("/swarm/addrs/local")

  @spec connect(binary) ::
          {:client_error | :forbidden | :missing | :not_allowed | :ok | :server_error, any}
  def connect(multihash), do: request_get("/swarm/connect?arg=", multihash)

  @spec disconnect(binary) ::
          {:client_error | :forbidden | :missing | :not_allowed | :ok | :server_error, any}
  def disconnect(multihash) when is_bitstring(multihash),
    do: request_get("/swarm/disconnect?arg=", multihash)

  @spec filters ::
          {:client_error | :forbidden | :missing | :not_allowed | :ok | :server_error, any}
  def filters(), do: request_get("/swarm/filters")

  @spec filters_add(binary) ::
          {:client_error | :forbidden | :missing | :not_allowed | :ok | :server_error, any}
  def filters_add(multihash), do: request_get("/swarm/filters/add?arg=", multihash)

  @spec filters_rm(binary) ::
          {:client_error | :forbidden | :missing | :not_allowed | :ok | :server_error, any}
  def filters_rm(multihash), do: request_get("/swarm/filters/rm?arg=", multihash)
end