View Source MyspaceIPFS (Myspace IPFS v0.1.0-alpha.1)

MyspaceIPFS.Api is where the main commands of the IPFS API reside. Alias this library and you can run the commands via Api.<cmd_name>.

  ## Examples

  iex> alias MyspaceIPFS.API, as: Api
  iex> Api.get("Multihash_key")
  <<0, 19, 148, 0, ... >>

Link to this section Summary

Types

The structure of a normal error response from the node.

The file system path to the file to be sent to the node.

The structure of a normal response from the node.

The name of the file or data to be sent to the node.

The structure of a JSON response from the node.

The options to be sent to the node. These are dependent on the endpoint

The path to the endpoint to be hit. For example, /add or /cat. It's called path because sometimes the MultiHash is not enough to identify the resource, and a path is needed, eg. /ipns/myspace.bahner.com

The structure of a JSON response from the node.

Functions

Add a file to IPFS.

Get the contents of a file from ipfs. Easy way to get the contents of a text file for instance.

Get a file or directory from IPFS. As it stands ipfs sends a text blob back, so we need to implement a way to get the file extracted and saved to disk. The default name is the CID or the basename of the IPNS or IPFS path.

Show the id of the IPFS node.

List the files in an IPFS object.

Mount an IPFS read-only mountpoint.

Ping a peer.

Resolve the value of names to IPFS.

Shutdown the IPFS daemon.

Link to this section Types

@type error() ::
  {:error, Tesla.Env.t()}
  | {:eserver, Tesla.Env.t()}
  | {:eclient, Tesla.Env.t()}
  | {:eaccess, Tesla.Env.t()}
  | {:emissing, Tesla.Env.t()}
  | {:enoallow, Tesla.Env.t()}

The structure of a normal error response from the node.

@type fspath() :: String.t()

The file system path to the file to be sent to the node.

@type mapped() :: {:ok, list()} | {:error, Tesla.Env.t()}

The structure of a normal response from the node.

@type name() :: String.t()

The name of the file or data to be sent to the node.

@type okresult() :: {:ok, any()} | {:error, Tesla.Env.t()}

The structure of a JSON response from the node.

@type opts() :: list()

The options to be sent to the node. These are dependent on the endpoint

@type path() :: String.t()

The path to the endpoint to be hit. For example, /add or /cat. It's called path because sometimes the MultiHash is not enough to identify the resource, and a path is needed, eg. /ipns/myspace.bahner.com

@type result() :: any() | {:error, Tesla.Env.t()}

The structure of a JSON response from the node.

Link to this section Functions

@spec add(fspath(), opts()) :: result()

Add a file to IPFS.

options

Options

https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-add

@spec cat(path(), opts()) :: result()

Get the contents of a file from ipfs. Easy way to get the contents of a text file for instance.

options

Options

https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-cat

[
  offset: <int64>,
  length: <int64>,
  progress: <bool>
]
Link to this function

daemon(start? \\ true, flag \\ [], opts \\ [])

View Source

Start the IPFS daemon.

You should run this before any other command, but it's probably easier to do outside of the library.

options

Options

https://docs.ipfs.tech/reference/kubo/cli/#ipfs-daemon

[
  "--init", # <bool> Initialize IPFS with default settings, if not already initialized
  "--migrate", # <bool> If answer yes to migration prompt
  "--init-config <string>", # Path to the configuration file to use
  "--init-profile <string>", # Apply profile settings to config
  "--routing <string>", # Override the routing system
  "--mount", # <bool> Mount IPFS to the filesystem (experimental)
  "--writable", # <bool> Enable writing objects (with POST, PUT, DELETE)
  "--mount-ipfs <string>", # Path to the mountpoint for IPFS (if using --mount)
  "--mount-ipns <string>", # Path to the mountpoint for IPNS (if using --mount)
  "--unrestricted-api", # <bool> Allow API access to unlisted hashes
  "--disable-transport-encryption", # <bool> Disable transport encryption (for debugging)
  "--enable-gc", # <bool> Enable automatic repo garbage collection
  "--enable-pubsub-experiment", # <bool> Enable experimental pubsub
  "--enable-namesys-pubsub", # <bool> Enable experimental namesys pubsub
  "--agent-version-suffix <string>", # Suffix to append to the AgentVersion string for id()
]
@spec get(path(), opts()) :: result()

Get a file or directory from IPFS. As it stands ipfs sends a text blob back, so we need to implement a way to get the file extracted and saved to disk. The default name is the CID or the basename of the IPNS or IPFS path.

NB! Unsafe (relative symlinks) will raise an error.

Compression is not implemented yet.

options

Options

https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-get

[
  output: <string>, # Optional, default: Name of the object. CID or path basename.
  archive: <bool>, # Optional, default: false
  compress: <bool>, # NOT IMPLEMENTED
  compression_level: <int> # NOT IMPLEMENTED
]
@spec id() :: result()

Show the id of the IPFS node.

https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-id Returns a map with the following keys:

  • ID: the id of the node.
  • PublicKey: the public key of the node.
  • Addresses: the addresses of the node.
  • AgentVersion: the version of the node.
  • ProtocolVersion: the protocol version of the node.
  • Protocols: the protocols of the node.
@spec ls(path(), opts()) :: result()

List the files in an IPFS object.

options

Options

https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-ls

[
  headers: <bool>,
  resolve-type: <bool>,
  stream: <bool>,
  size: <bool>,
]

response

Response

{
  Objects: [
    {
      "Name": "string",
      "Hash": "string",
      "Size": 0,
      "Type": 0,
      "Links": [
        {
          "Name": "string",
          "Hash": "string",
          "Size": 0,
          "Type": 0
        }
      ]
    }
  ]
}
@spec mount(opts()) :: result()

Mount an IPFS read-only mountpoint.

options

Options

https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-mount

[
  ipfs-path: <string>, # default: /ipfs
  ipns-path: <string>, # default: /ipns
]
@spec ping(name(), opts()) :: result()

Ping a peer.

parameters

Parameters

  • peer: the peer to ping.

options

Options

https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-ping

[
  n|count: <int>,
]
Link to this function

resolve(path, opts \\ [])

View Source
@spec resolve(path(), opts()) :: result()

Resolve the value of names to IPFS.

options

Options

https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-resolve

[
  recursive: true,
  nocache: true,
  dht-record-count: 10,
  dht-timeout: 10
]
@spec shutdown() :: result()

Shutdown the IPFS daemon.