defmodule MyspaceIPFS.Config do @moduledoc """ MyspaceIPFS.Config is where the config commands of the IPFS API reside. """ import MyspaceIPFS.Api import MyspaceIPFS.Utils @typep name :: MyspaceIPFS.name() @typep result :: MyspaceIPFS.result() @typep opts :: MyspaceIPFS.opts() @typep fspath :: MyspaceIPFS.fspath() @doc """ Get the value of a config key. ## Parameters key: The key to get the value of. value: the value to set the key to (optional). ## Options https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-config ``` [ "bool" - , # Set a boolean value. "json" - , # Parse stringified JSON. ] ``` """ @spec config(name, name, opts) :: result def config(key, value \\ nil, opts \\ []) def config(key, value, opts) when is_bitstring(key) and is_bitstring(value) do post_query("/config?arg=" <> key <> "&arg=" <> value, query: opts) |> handle_plain_response() end def config(key, value, opts) when is_bitstring(key) and is_nil(value) do post_query("/config?arg=" <> key, query: opts) |> handle_json_response() end def config(key, _value, opts) when is_bitstring(key) and is_list(opts) do post_query("/config?arg=" <> key, query: opts) |> handle_json_response() end @doc """ Apply profile to config. ## Parameters profile: The profile to apply. ## Options https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-config-profile-apply ``` [ `dry-run` - , # Dry run. ] ``` """ @spec profile_apply(name, opts) :: result def profile_apply(profile, opts \\ []) when is_bitstring(profile) do post_query("/config/profile/apply?arg=" <> profile, query: opts) |> handle_json_response() end @doc """ Replace the config with the given JSON file. ## Parameters fspath: The path to the config file to use. """ @spec replace(fspath) :: result def replace(fspath) do post_file("/config/replace", fspath) |> handle_json_response() end @doc """ Show the current config. """ @spec show() :: result def show() do post_query("/config/show") |> handle_json_response() end end