defmodule MyspaceIPFS.Repo do
@moduledoc """
MyspaceIPFS.Repo is where the repo commands of the IPFS API reside.
"""
import MyspaceIPFS.Api
import MyspaceIPFS.Utils
@typep okresult :: MyspaceIPFS.okresult()
@typep opts :: MyspaceIPFS.opts()
@doc """
Perform a garbage collection sweep on the repo.
## Options
https://docs.ipfs.io/reference/http/api/#api-v0-repo-gc
stream_errors - <bool>, # Stream errors during GC.
quiet <bool>, # Write minimal output.
silent <bool>, # Write no output.
"""
@spec gc(opts) :: okresult
def gc(opts \\ []) do
post_query("/repo/gc", query: opts)
|> handle_json_response()
end
@doc """
List all local repo blocks.
"""
@spec ls :: okresult
def ls() do
post_query("/repo/ls")
|> handle_json_response()
end
@doc """
Apply any outstanding repo migrations.
## Options
https://docs.ipfs.io/reference/http/api/#api-v0-repo-migrate
allow-downgrade - <bool>, # Allow downgrading repo version.
"""
@spec migrate(opts) :: okresult
def migrate(opts \\ []) do
post_query("/repo/migrate", query: opts)
|> handle_plain_response()
end
@doc """
Get stats for the currently used repo.
## Options
https://docs.ipfs.io/reference/http/api/#api-v0-repo-stat
human - <bool>, # Output human-readable numbers.
size-only - <bool>, # Only output the RepoSize.
"""
@spec stat(opts) :: okresult
def stat(opts \\ []) do
post_query("/repo/stat", query: opts)
|> handle_json_response()
end
@doc """
Verify all blocks in repo are not corrupted.
"""
@spec verify :: okresult
def verify do
post_query("/repo/verify")
|> handle_json_response()
end
@doc """
Show repo version.
## Options
https://docs.ipfs.io/reference/http/api/#api-v0-repo-version
quiet - <bool>, # Write minimal output.
"""
@spec version(opts) :: okresult
def version(opts \\ []) do
post_query("/repo/version", query: opts)
|> handle_json_response()
end
end