Example #1
0
 db.get('!dat!key', function (err, value) {
   if (err) return cb(err)
   if (!value) return new Error('No dat here')
   var key = encoding.decode(value)
   
   var core = hypercore(db)
   var feed = core.createFeed(key)
   feed.open(function () {
     var secret = feed.secretKey
     if (!secret) return cb(new Error('No secret key found here'))
     cb(null, signatures.sign(buf, secret))
   })
 })  
Example #2
0
File: import.js Project: wtkm7/jawn
tape('test file ingest', function (t) {

  var db = level('test.db');
  var core = hypercore(db);

  var J = new Jawn();

  var path = './test.csv';

  var ws = J.import(core, path);

  var filecontents = fs.readFileSync(path)
                        .toString()
                        .split('\n')
                        .filter(function (line) {
                          return line !== '';
                        });

  // get number of rows in test.csv
  var numrows = filecontents.length;

  ws.end(function () {

    var id = ws.id.toString('hex');

    t.ok(ws.id, 'has id');

    t.same(ws.blocks, numrows, 'there should be one row for each block');

    // Now create a read stream with the same id and read the data
    var rs = core.createReadStream(id);

    var feedcontents = [];

    rs.on('data', function (data) {
      // gather feed contents
      feedcontents.push(data.toString());
    });

    rs.on('end', function () {
      t.same(filecontents, feedcontents, 'contents of feed should match file contents');
    });

  });

  t.end();

});
Example #3
0
module.exports = function createStream (key, opts) {
  if (typeof key === 'string') key = Buffer(key, 'hex')
  if (key && !Buffer.isBuffer(key)) {
    opts = key
    key = undefined
  }
  if (!opts) opts = {}
  key = key || opts.key

  var secretKey = opts.secretKey
  if (key && key.length === 64) {
    secretKey = key
    key = undefined
  }
  if (!key && secretKey) {
    key = secretKey.slice(32, 64)
  }

  var db = opts.db || memdb()
  var core = hypercore(db)
  var feed = core.createFeed(null, {
    key,
    secretKey,
    live: opts.live || !opts.static,
    storage: opts.storage
  })

  var rs = feed.createReadStream({
    live: !!opts.tail,
    start: opts.start,
    end: opts.end
  })

  var write = !key || !!secretKey

  var stream
  if (write) {
    var ws = feed.createWriteStream()
    stream = patch(duplexify(ws, rs), feed)
  } else {
    stream = patch(rs, feed)
  }

  return stream
}
Example #4
0
var stats = require('./')
var http = require('http')
var swarm = require('hyperdrive-archive-swarm')
var minimist = require('minimist')

var argv = minimist(process.argv.slice(2), {
  alias: {port: 'p', 'hyperdrive': 'd', wait: 'w'},
  boolean: ['hyperdrive']
})

var hypercore = require('hypercore')
var hyperdrive = require('hyperdrive')
var memdb = require('memdb')

var core = hypercore(memdb())
var f = core.createFeed(argv._[0])
var archive = null

if (argv.hyperdrive) {
  archive = hyperdrive(memdb()).createArchive(argv._[0])
}

var server = http.createServer(stats(archive || f))

server.on('listening', function () {
  console.log('Feed: ' + f.key.toString('hex'))
  console.log('Stats listening on port ' + server.address().port)

  if (argv.wait) setTimeout(join, Number(argv.wait))
  else join()
Example #5
0
var hypercore = require('hypercore')
var level = require('level-browserify')
var core = hypercore(level('hypercore'))
var Queue = require('ordered-queue')

var hubs = [ 'https://signalhub.mafintosh.com' ]

module.exports = function (self) {
  var mode = null
  var feed, writeQueue, writeSeq = 0
  var swarms = {}

  self.addEventListener('message', function (ev) {
    if (ev.data.type === 'record.start') {
      var stream = core.createWriteStream()
      writeQueue = new Queue(function (buf, next) {
        stream.write(buf)
        next()
      }, { concurrency: 10 })
      mode = 'record'
      var id = stream.key.toString('hex')
      feed = stream.feed
      self.postMessage({ type: 'record.info', id: id })
 
    } else if (ev.data.type === 'peer.start' && feed) {
      var id = ev.data.peerId
      swarms[id] = feed.replicate({ live: true, encrypted: false })
      swarms[id].on('data', function (buf) {
        console.log('SEND PEER', buf.length)
        self.postMessage({
          type: 'peer.data',
Example #6
0
// All the keys of past and present participants
var keys = []

var argv = minimist(process.argv.slice(2))

if (argv.help) {
  console.error('Usage: hyperchat [options]')
  console.error()
  console.error('  --feed=[feed-key]        Feed of one participant')
  console.error('  --user=[username]        Username')
  console.error()
  process.exit(1)
}

var db = level(path.join(home(), '.hyperchat.db'))
var core = hypercore(db)

var myFeed = core.createFeed()
// Set username
var cmd = {type: 'username', username: '******'}
if (argv.user) {
  cmd.username = argv.user
}
myFeed.append(JSON.stringify(cmd))

console.log('my key is ' + myFeed.key.toString('hex'))
console.log('my discovery key is ' + myFeed.discoveryKey.toString('hex'))

// Share our feed
join(myFeed)
Example #7
0
test('jawn constructor set core', function (t) {
  var samplecore = hypercore(memdb())
  var jawn = new Jawn({core: samplecore})
  t.equal(jawn.core, samplecore, 'uses the provided instance of hypercore')
  t.end()
})