1
0
mirror of https://github.com/fluencelabs/aqua-ipfs synced 2025-03-16 05:30:50 +00:00
aqua-ipfs/aqua/ipfs-api.aqua
2024-02-21 18:06:38 +00:00

113 lines
3.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

aqua IpfsApi declares *
export get_and_cache
export put, dag_put, dag_get, get_from, dag_get_from, cat_from
export set_timeout, get_external_api_multiaddr
export get_external_swarm_multiaddr, get_local_api_multiaddr
import "@fluencelabs/aqua-lib/builtin.aqua"
import "ipfs.aqua"
alias Multiaddr: string
-- Download file from remote IPFS node to Fluence node and then
-- put that file to local IPFS node, effectively caching it on the local IPFS node.
--
-- Arguments:
-- node - PeerId of the node where execution should happen
-- cid IPFS Content ID to download
-- from - Multiaddress of IPFS node to download `cid` from
-- error - callback to notify function caller about errors
--
-- Returns:
-- Path on the node's local filesystem. It will be available only during single particle execution.
--
-- Errors:
-- If Ipfs.get_from or Ipfs.put fails, nil is returned.
-- Errors are reported to the `error` callback.
func get_and_cache(
node: PeerId,
cid: CID,
from: Multiaddr,
error: string, string -> ()
) -> ?CID:
-- localCid will be the same as cid
localCid: *CID
on node:
-- Download file from remote IPFS to local filesystem
get <- Ipfs.get_from(cid, from)
if get.success:
-- Put file to local IPFS node
put <- Ipfs.put(get.path)
if put.success:
localCid <<- put.hash
else:
-- report error in background co-routine
co error("Ipfs.put failed", put.error)
else:
-- report error in background co-routine
co error("Ipfs.get failed", get.error)
<- localCid
-- Upload file `path` to IPFS node running on `node`
-- path should exist & be available to `aqua-ipfs`
func put(node: PeerId, path: string) -> IpfsPutResult:
on node:
result <- Ipfs.put(path)
<- result
-- Upload file `path` as a dag to IPFS node running on `node`
-- path should exist & be available to `aqua-ipfs`
func dag_put(node: PeerId, path: string) -> IpfsPutResult:
on node:
result <- Ipfs.dag_put(path)
<- result
-- Returns file path of the dag `cid` from local cache of IPFS node `node`
func dag_get(node: PeerId, cid: CID) -> IpfsGetResult:
on node:
result <- Ipfs.dag_get(cid)
<- result
-- Download file `cid` from IPFS node `from` and save it to `node`
func get_from(node: PeerId, cid: CID, from: Multiaddr) -> IpfsGetResult:
on node:
result <- Ipfs.get_from(cid, from)
<- result
-- Return contents of the dag `cid` from IPFS node `from` and save it to `node`
func dag_get_from(node: PeerId, cid: CID, from: Multiaddr) -> IpfsGetResult:
on node:
result <- Ipfs.dag_get_from(cid, from)
<- result
-- Return contents of the file `cid` from IPFS node `from`
func cat_from(node: PeerId, cid: CID, from: Multiaddr) -> IpfsCatResult:
on node:
result <- Ipfs.cat_from(cid, from)
<- result
-- Set timeout for IPFS calls in `aqua-ipfs`
func set_timeout(node: PeerId, timeout_sec: u64):
on node:
Ipfs.set_timeout(timeout_sec)
-- Get externally available multiaddress of IPFS's HTTP RPC endpoint (usually on port 5001)
func get_external_api_multiaddr(node: PeerId) -> IpfsMultiaddrResult:
on node:
result <- Ipfs.get_external_api_multiaddr()
<- result
-- Get externally available multiaddress of IPFS's Swarm endpoint (usually on port 4001)
func get_external_swarm_multiaddr(node: PeerId) -> IpfsMultiaddrResult:
on node:
result <- Ipfs.get_external_swarm_multiaddr()
<- result
-- Get local multiaddress of IPFS's HTTP RPC endpoint (usually on port 5001)
func get_local_api_multiaddr(node: PeerId) -> IpfsMultiaddrResult:
on node:
result <- Ipfs.get_local_api_multiaddr()
<- result