aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 78d3f949f7fd9849661906f19f786089e0a5b38a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# logbook-channels

logbook-channels is a utility to unify the two ways of adding messages to channels in Scuttlebutt: hashtags and channel headers.

The files in the repo are as follows:
- **pull-many-v2.js** is a utility that must be in the same directory as either *channels-v2.js* or *channels-lib.js*.
- **channels-v2.js** is a standalone command line utility. To print all messages in the `logbook` channel, run `node channels-v2.js logbook`.
- **channels-lib.js** provides channel messages from a pull-stream. Example usage would be:

```
const pull = require("pull-stream");
const clientFactory = require("ssb-client");
const channels = require("./channels-lib");

clientFactory(function(err, client) {
  if(err) throw err;
  channel.getMessages(client, "logbook", null, function(messageStream) {
    pull(messageStream, pull.drain(function(msg, _) {
      console.log(JSON.stringify(msg));
    })
  });
});
```

To integrate into Patchfoo:
```
Serve.prototype.logbook2 = function (ext) {
  var channelName = "logbook"
  var q = this.query
  var opts = {
    reverse: !q.forwards,
    //sortByTimestamp: q.sort === 'claimed',
    sortByTimestamp: q.sort || 'claimed',
    lt: Number(q.lt) || Date.now(),
    gt: Number(q.gt) || -Infinity,
    filter: q.filter,
    channel: channelName
  }

  channels.getMessages(this.app.sbot, channelName, this, function(messageStream, serve) {
    pull(messageStream,
	    serve.renderThreadPaginated(opts, null, q),
	    serve.wrapMessages(),
	    serve.wrapChannel(channelName),
	    serve.wrapPage("#" + channelName),
	    serve.respondSink(200, {
		    'Content-Type': ctype(ext)
	    })
    )
  }
  , hops=3)
}
```