laconic-console/packages/console-server/src/resolvers/ipfs.js
2020-06-08 22:51:43 -05:00

59 lines
1.3 KiB
JavaScript

//
// Copyright 2020 DxOS.org
//
import debug from 'debug';
import IpfsHttpClient from 'ipfs-http-client';
const log = debug('dxos:console:server:resolvers');
export const ipfsResolvers = {
Query: {
//
// IPFS
// TODO(burdon): Call from client?
// https://github.com/ipfs/js-ipfs
// https://github.com/ipfs/js-ipfs/tree/master/packages/ipfs-http-client#api
//
ipfs_status: async (_, __, { config }) => {
log('Calling IPFS...');
// NOTE: Hangs if server not running.
const ipfs = new IpfsHttpClient(config.services.ipfs.server);
const id = await ipfs.id();
const version = await ipfs.version();
const peers = await ipfs.swarm.peers();
const stats = await ipfs.stats.repo();
// Do not expose the repo path.
delete stats.repoPath;
const refs = [];
for await (const ref of ipfs.refs.local()) {
if (ref.err) {
log(ref.err);
} else {
refs.push(ref.ref);
}
}
return {
timestamp: new Date().toUTCString(),
json: JSON.stringify({
id,
version,
repo: {
stats
},
refs: {
local: refs
},
swarm: {
peers
}
})
};
}
}
};