defmodule MyspaceIPFS.Config do @moduledoc """ MyspaceIPFS.Api is where the main commands of the IPFS API reside. """ import MyspaceIPFS.Api import MyspaceIPFS.Utils @typep name :: MyspaceIPFS.name() @typep result :: MyspaceIPFS.result() @typep opts :: MyspaceIPFS.opts() @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). opts: The options to pass to the command (optional). ## Options https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-config ``` [ arg: "", # the value of the key to set bool: "", file: "", json: "", ] ``` """ @spec config(name, name, opts) :: result @spec config(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, opts) |> map_response_data() end def config(key, value, opts) when is_bitstring(key) and is_nil(value) do post_query("/config?arg=" <> key, opts) |> Jason.decode() end def config(key, _value, opts) when is_bitstring(key) and is_list(opts) do post_query("/config?arg=" <> key, opts) |> Jason.decode() end def show(args) when is_bitstring(args) do {:ok, res} = post_query("/update?arg=", args) res.body |> String.replace(~r/\r|\n/, "") end # version function - does not currently accept the optional arguments on golang client. def version(num \\ false, comm \\ false, repo \\ false, all \\ false) do post_query( "/version?number=" <> to_string(num) <> "&commit=" <> to_string(comm) <> "&repo=" <> to_string(repo) <> "&all=" <> to_string(all), "" ) end end