index.jsView |
---|
6 | 6 … | var msShs = require('multiserver/plugins/shs') |
7 | 7 … | var msNet = require('multiserver/plugins/net') |
8 | 8 … | var muxrpc = require('muxrpc') |
9 | 9 … | var pull = require('pull-stream') |
| 10 … | +var ssbHash = require('pull-hash/ext/ssb') |
| 11 … | +var multicb = require('multicb') |
10 | 12 … | |
11 | 13 … | function toSodiumKeys(keys) { |
12 | 14 … | if(!keys || !keys.public) return null |
13 | 15 … | return { |
15 | 17 … | secretKey: new Buffer(keys.private.replace('.ed25519', ''), 'base64'), |
16 | 18 … | } |
17 | 19 … | } |
18 | 20 … | |
| 21 … | +function fixAddBlob(add) { |
| 22 … | + return function (hash, cb) { |
| 23 … | + if (typeof hash === 'function') cb = hash, hash = null |
| 24 … | + var done = multicb({ pluck: 1, spread: true }) |
| 25 … | + var sink = pull( |
| 26 … | + ssbHash(done()), |
| 27 … | + add(hash, done()) |
| 28 … | + ) |
| 29 … | + done(cb) |
| 30 … | + return sink |
| 31 … | + } |
| 32 … | +} |
| 33 … | + |
19 | 34 … | module.exports = function (opts, cb) { |
20 | 35 … | if (typeof opts === 'function') cb = opts, opts = null |
21 | 36 … | opts = opts || {} |
22 | 37 … | var config = createConfig(process.env.ssb_appname, opts) |
56 | 71 … | var manifest = config.manifest |
57 | 72 … | || JSON.parse(fs.readFileSync(config.manifestFile)) |
58 | 73 … | var sbot = muxrpc(manifest, false)() |
59 | 74 … | sbot.id = '@'+stream.remote.toString('base64')+'.ed25519' |
| 75 … | + if (sbot.blobs && sbot.blobs.add) sbot.blobs.add = fixAddBlob(sbot.blobs.add) |
60 | 76 … | pull(stream, sbot.createStream(), stream) |
61 | 77 … | delete config.keys |
62 | 78 … | cb(null, sbot, config) |
63 | 79 … | }) |