Make pubsub connect work with js-ipfs and js-ipfs-api, test with both

This commit is contained in:
haad
2016-05-23 12:08:30 +02:00
parent 6e4e12015d
commit 15342ff732
3 changed files with 82 additions and 52 deletions

View File

@@ -109,33 +109,58 @@ class OrbitDB {
_connect(hash, username, password, allowOffline) {
if(allowOffline === undefined) allowOffline = false;
const catFromJsIpfsApi = (hash) => {
return new Promise((resolve, reject) => {
if(this._ipfs.cat) {
logger.debug(".cat with js-ipfs-api");
this._ipfs.cat(hash, (err, res) => {
if(err) return reject(err)
let buf = '';
res
.on('error', (err) => reject(err))
.on('data', (data) => buf += data)
.on('end', () => resolve(buf.toString()))
});
} else {
reject("not using js-ipfs-api");
}
});
};
const catFromJsIpfs = (hash) => {
return new Promise((resolve, reject) => {
if(this._ipfs.files.cat) {
logger.debug(".cat with js-ipfs");
this._ipfs.files.cat(hash, (err, res) => {
if(err) return reject(err);
let buf = '';
res.on('data', (res) => {
res.stream
.on('error', (err) => reject(err))
.on('data', (data) => buf += data)
.on('end', () => resolve(buf.toString()))
})
});
} else {
reject("not using js-ipfs");
}
});
};
const readNetworkInfo = (hash) => {
return new Promise((resolve, reject) => {
// js-ipfs-api
this._ipfs.cat(hash, (err, res) => {
if(err) return reject(err)
let buf = '';
res
.on('error', (err) => reject(err))
.on('data', (data) => buf += data)
.on('end', () => resolve(buf.toString()))
});
// js-ipfs
// this._ipfs.files.cat(hash, (err, res) => {
// if(err) return reject(err)
// let buf = '';
// res.on('data', (res) => {
// res.stream
// .on('error', (err) => reject(err))
// .on('data', (data) => buf += data)
// .on('end', () => resolve(buf.toString()))
// })
// });
// mock
// resolve(JSON.stringify({
// name: 'localhost dev network',
// publishers: ['localhost:3333']
// }))
catFromJsIpfsApi(hash).then(resolve)
.catch((e) => {
catFromJsIpfs(hash).then(resolve)
.catch((e) => {
logger.warn(".cat - no api or content found, using mock")
resolve(JSON.stringify({
name: 'localhost dev network',
publishers: ['localhost:3333']
}))
})
})
});
};

View File

@@ -21,21 +21,22 @@ const password = '';
let ipfs, ipfsDaemon;
const IpfsApis = [
// {
// // js-ipfs
// start: () => {
// return new Promise((resolve, reject) => {
// const IPFS = require('ipfs')
// const ipfs = new IPFS();
// ipfs.goOnline((err) => {
// if(err) reject(err)
// resolve(ipfs)
// });
// });
// },
// // stop: () => Promise.resolve()
// stop: () => new Promise((resolve, reject) => ipfs.goOffline(resolve))
// },
{
// js-ipfs
start: () => {
return new Promise((resolve, reject) => {
const IPFS = require('ipfs')
const ipfs = new IPFS();
// resolve(ipfs);
ipfs.goOnline((err) => {
if(err) reject(err)
resolve(ipfs)
});
});
},
// stop: () => Promise.resolve()
stop: () => new Promise((resolve, reject) => ipfs.goOffline(resolve))
},
{
// js-ipfs-api via local daemon
start: () => {

View File

@@ -20,18 +20,22 @@ const ipfsPath = '/tmp/orbittests';
let ipfs, ipfsDaemon;
const IpfsApis = [
// {
// // js-ipfs
// start: () => {
// return new Promise((resolve, reject) => {
// const IPFS = require('ipfs')
// const ipfs = new IPFS();
// ipfs.goOnline(() => resolve(ipfs));
// // resolve(ipfs);
// });
// },
// stop: () => new Promise((resolve, reject) => ipfs.goOffline(resolve))
// },
{
// js-ipfs
start: () => {
return new Promise((resolve, reject) => {
const IPFS = require('ipfs')
const ipfs = new IPFS();
// resolve(ipfs);
ipfs.goOnline((err) => {
if(err) reject(err)
resolve(ipfs)
});
});
},
// stop: () => Promise.resolve()
stop: () => new Promise((resolve, reject) => ipfs.goOffline(resolve))
},
{
// js-ipfs-api via local daemon
start: () => {