defmodule MyspaceIPFS.Version do
@moduledoc """
MyspaceIPFS.Version is a collection of functions for the MyspaceIPFS library.
"""
import MyspaceIPFS.Api
import MyspaceIPFS.Utils
@typep result :: MyspaceIPFS.result()
@doc """
Get the version of the IPFS daemon.
## Parameters
What version information to return (optional). Defaults to all.
Allowed values are: all, Commit, Golang, Version, Repo, System.
## Options
https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-version
"""
@spec version(binary) :: result
def version(name \\ "all") do
post_query("/version")
|> handle_plain_response()
|> then(fn {:ok, data} -> data end)
|> List.flatten()
|> return_version(name)
end
defp return_version(versions, key) do
if key == "all" do
versions
|> List.first()
|> okify()
else
get_version(versions, key)
|> okify()
end
end
defp get_version(versions, key) do
versions
|> List.first()
|> Map.fetch!(~c'#{key}')
end
@doc """
Get the depdency versions of the IPFS daemon.
"""
@spec deps() :: result
def deps() do
post_query("/version/deps")
|> handle_plain_response()
end
end