defmodule MyspaceIPFS.Bootstrap do @moduledoc """ MyspaceIPFS.Bootstrap is where the bootstrap commands of the IPFS API reside. """ import MyspaceIPFS.Api import MyspaceIPFS.Utils @typep okmapped :: MySpaceIPFS.okmapped() @doc """ List peers in bootstrap list. """ @spec bootstrap() :: okmapped() def bootstrap do post_query("/bootstrap") |> handle_plain_response() end @doc """ Add peers to the bootstrap list. ## Parameters https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-bootstrap-add `peer` - The peer ID to add to the bootstrap list. The format is a multiaddr in the form of `/` """ @spec add(binary) :: okmapped() def add(peer) do post_query("/bootstrap/add?arg=" <> peer) |> handle_plain_response() end @doc """ Add default peers to the bootstrap list. ## Parameters https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-bootstrap-add-default """ @spec add_default() :: okmapped() def add_default do post_query("/bootstrap/add/default") |> handle_plain_response() end @doc """ Show peers in bootstrap list. ## Parameters https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-bootstrap-list """ @spec list() :: okmapped() def list do post_query("/bootstrap/list") |> handle_plain_response() end @doc """ Remove peer to the bootstrap list. ## Parameters https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-bootstrap-rm `peer` - The peer ID to remove from the bootstrap list. The format is a multiaddr in the form of `/` """ @spec rm(binary) :: okmapped() def rm(peer) do post_query("/bootstrap/rm?arg=" <> peer) |> handle_plain_response() end @doc """ Remove all peers from the bootstrap list. ## Parameters https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-bootstrap-rm-all """ @spec rm_all() :: okmapped() def rm_all do post_query("/bootstrap/rm/all") |> handle_plain_response() end end