Returns a set of functions as an API for validating, building, publishing and reading records related to gatherings
var Scuttle = require('scuttle-gathering')
var scuttle = Scuttle(server) // a scuttlebutt server or connection to one
scuttle.get(gatheringKey, (err, niceDataObject) => { ... })
scuttle.post(opts, cb)
alias of: scuttle.gathering.async.publish
opts
: an Object of form (title
and startDateTime
are the only required properties)
{
title: String,
startDateTime: {
epoch: UnixTime,
tz: String // tz is optional
},
progenitor: MessageId, // optional
description: String, // optional
location: String, // optional
image: { // optional
link: Blob,
name: String, // name, size, type are optional
size: Integer,
type: MimeTypeString
},
mentions: Array, // optional
recps: Array // optional
}
The mentions
and recps
Arrays require elements that are of form FeedId
or { link: FeedId, name: String }
.
If recps
is are provided, the gathering and all interactions with it will be private (encrypted to the listed recps
).
A maximum of 7 recps can be provided, and you must manually include yourself (if you want to be able to see the gathering in future)
cb
: a callback of signature (err, data)
scuttle.put(gatheringKey, opts, cb)
alias of scuttle.update.async.publish
gatheringKey
is a messageId for your gathering
opts
is an Object of any of the gathering details you'd like to update (title, startDateTime, description, location, image, etc in the appropriate formats)
cb
: a callback of signature (err, data)
scuttle.attending(gatheringKey, isAttending, cb)
alias of scuttle.attendee.async.publish
Publishes a message updating whether or not you're attending the gathering.
gatheringKey
is a messageId for your gathering
isAttending
is a Boolean
cb
: a callback of signature (err, data)
NOTE - can also be called scuttle.attendee(key, cb)
which is the same as saying isAttending
true
scuttle.get(gatheringKey, cb)
alias of scuttle.gathering.async.get
Gets a 'document' - a reduced state of the 'gathering as a whole' of the form:
{
key: MessageId,
title: String,
startDateTime: {
epoch: UnixTime,
tz: String // *
},
progenitor: MessageId,
description: String,
location: String,
image: {
link: Blob,
name: String, // *
size: Integer, // *
type: MimeTypeString // *
},
images: [ Image, Image, ... ] // Objects of same form as image property
isAttendee: Boolean,
attendees: [ FeedId, FeedId, ... ],
notAttendees: [ FeedId, FeedId, ... ], // people who have explicitly said they are not coming, or cancelled
heads: [ MessageId, .... ], // most recent message(s) in the document/ thread
threads: [ MessageId, ... ] // all backlinks in causal order
}
Strings that haven't been set will be empty strings, sub-properties marked with *
are optional and may not be present.
AGPL-3.0