/ssb-client

client library to scuttlebot

Primary LanguageJavaScript

ssb-client v2

Scuttlebot client.

Create an rpc connection to an sbot running locally.

example

var ssbClient = require('ssb-client')
var ssbKeys = require('ssb-keys')

// simplest usage, connect to localhost sbot
// this will cb with an error if an sbot server is not running
ssbClient(function (err, sbot) {
  // ...
})

// configuration:
var keys = ssbKeys.loadOrCreateSync('./app-private.key')
ssbClient(
  keys,                // optional, defaults to ~/.ssb/secret
  {
    host: 'localhost', // optional, defaults to localhost
    port: 8008,        // optional, defaults to 8008
    key: keys.id,      // optional, defaults to keys.id

    caps: {
        // random string for `appKey` in secret-handshake
        shs: ''
    },

    // Optional muxrpc manifest. Defaults to manifest provided by server.
    manifest: {}

  },
  function (err, sbot, config) {
    // ...
  }
)

api

require('ssb-client') => createEasyClient

createEasyClient(cb(err, sbot))

Create a connection to the local ssb-server instance, using the default keys. Configuration and keys will be loaded from directory specified by ssb_appname. (by default ~/.ssb)

The manifest will be the manifest provided by that server.

Calling this without arguments is handy for scripts, but applications should use the clearer apis.

there is a legacy api, that makes things as "easy" as possible, by loading configuration and defaults. This is useful for scripts but applications should probably use

createCustomClient({keys, config, manifest, remote}, cb(err, sbot))

Connect to a specific server with fixed settings. All fields are mandatory.

createLegacyClient(keys, opts, cb(err, sbot))

Connect to a client with some custom settings.

opts supports the keys:

  • remote multiserver address to connect to
  • host, port, key (legacy) if remote is not set, assemble address from host, port, key.
  • manifest use a custom manifest.

If you need custom options, it's recommended to use the createCustomClient API instead, but this is still provided for legacy support.

keys

See ssb-keys. The keys look like this:

{
    id: String,
    public: String,
    private: String,
    curve: 'ed25519'
}

caps

caps.shs is a random string passed to secret-handshake. It determines which sbot you are able to connect to. It defaults to a magic string in this repo and also in scuttlebot

var appKey = Buffer.from(opts.caps.shs, 'base64')

License

MIT, Copyright 2015 Paul Frazee and Dominic Tarr