Read network info from ipfs object (not from a file)

This commit is contained in:
haad 2016-05-10 15:08:26 +02:00
parent 6e4be8903e
commit 6cc2afab80
3 changed files with 18 additions and 25 deletions

View File

@ -1,7 +1,8 @@
'use strict';
const EventEmitter = require('events').EventEmitter;
const logger = require('logplease').create("orbit-db.Client");
const Logger = require('logplease');
const logger = Logger.create("orbit-db", { color: Logger.Colors.Magenta });
const EventStore = require('orbit-db-eventstore');
const FeedStore = require('orbit-db-feedstore');
const KeyValueStore = require('orbit-db-kvstore');
@ -96,22 +97,9 @@ class OrbitDB {
_connect(hash, username, password, allowOffline) {
if(allowOffline === undefined) allowOffline = false;
const readNetworkInfo = (hash) => {
return new Promise((resolve, reject) => {
this._ipfs.cat(hash).then((res) => {
let buf = '';
res
.on('error', (err) => reject(err))
.on('data', (data) => buf += data)
.on('end', () => resolve(buf))
});
});
};
let host, port, name;
return readNetworkInfo(hash)
.then((network) => JSON.parse(network))
return this._ipfs.object.get(hash)
.then((object) => JSON.parse(object.Data))
.then((network) => {
this.network = network;
name = network.name;
@ -120,6 +108,7 @@ class OrbitDB {
})
.then(() => {
this._pubsub = new PubSub();
logger.warn(`Connecting to Pubsub at '${host}:${port}'`);
return this._pubsub.connect(host, port, username, password)
})
.then(() => {

View File

@ -1,6 +1,7 @@
'use strict';
const _ = require('lodash');
const fs = require('fs');
const path = require('path');
const assert = require('assert');
const async = require('asyncawait/async');
@ -13,7 +14,7 @@ const OrbitServer = require('orbit-server/src/server');
require('logplease').setLogLevel('ERROR');
// Orbit
const network = 'QmYPobvobKsyoCKTw476yTui611XABf927KxUPCf4gRLRr'; // network.json
const network = 'QmaAHGFm78eupEaDFzBfhUL5xn32dbeqn8oU2XCZJTQGBj';
const username = 'testrunner';
const password = '';
@ -46,8 +47,10 @@ describe('Orbit Client', function() {
try {
ipfs = await(startIpfs());
const networkFile = await(ipfs.add('./test/network.json'))
assert.equal(networkFile[0].Hash, network);
const str = fs.readFileSync('./test/network.json', 'utf-8');
const networkData = new Buffer(JSON.stringify({ Data: str }));
const networkFile = await(ipfs.object.put(networkData))
assert.equal(networkFile.Hash, network);
client = await(OrbitDB.connect(network, username, password, ipfs, { allowOffline: true }));
client2 = await(OrbitDB.connect(network, username + "2", password, ipfs, { allowOffline: true }));
} catch(e) {

View File

@ -1,6 +1,7 @@
'use strict';
const assert = require('assert');
const fs = require('fs');
const Promise = require('bluebird');
const rimraf = require('rimraf')
const ipfsd = require('ipfsd-ctl');
@ -10,7 +11,7 @@ const OrbitServer = require('orbit-server/src/server');
// Mute logging
require('logplease').setLogLevel('ERROR');
const network = 'QmYPobvobKsyoCKTw476yTui611XABf927KxUPCf4gRLRr'; // network.json
const network = 'QmaAHGFm78eupEaDFzBfhUL5xn32dbeqn8oU2XCZJTQGBj';
const username = 'testrunner';
const username2 = 'rennurtset';
@ -41,6 +42,11 @@ describe('CounterStore', function() {
before((done) => {
rimraf.sync('./orbit-db-cache.json')
startIpfs()
.then((ipfs) => {
const str = fs.readFileSync('./test/network.json', 'utf-8');
const networkData = new Buffer(JSON.stringify({ Data: str }));
return ipfs.object.put(networkData).then(() => ipfs)
})
.then((res) => {
ipfs = res;
return Promise.map([username, username2], (login) => {
@ -54,11 +60,6 @@ describe('CounterStore', function() {
assert.equal(e, null);
});
})
.then(() => ipfs.add('./test/network.json'))
.then((networkFile)=> {
assert.equal(networkFile[0].Hash, network);
return;
})
.then(done)
});