@fappurbate/transmitter
v0.3.0
Published
Wrapper around Fappurbate Message Passing API and @fappurbate/channel.
Downloads
10
Readme
@fappurbate/transmitter
Wrapper around Fappurbate Message Passing API and @fappurbate/channel.
Documentation
Class: Transmitter
Imitates Fappurbate Message Passing API by forwarding messages and requests for @bot through Channel.
new Transmitter(options)
options.botChannelChannel?If not specified, a channel will be created with the name${SOME_CHARS}_${fb.runtime.name}.
onEvent.addListener(subject, callback): this
subjectstringName of the event to listen to.callback(string, any) => voidCallback will be called on a given event with the sender name and data attached as arguments.
Add a listener for a given event subject.
onEvent.removeListener(subject, callback): this
subjectstringName of the event.callback(string, any) => voidThe same callback that was passed toonEvent.addListener.
Remove an event listener.
onRequest.addHandler(subject, handler): this
subjectstringName of the request.handler(string, any => void|any|Promise)Handler will be called on a given request.
Add a handler for a given request subject. It will be called with the sender name and data attached as arguments. If the handler returns a non-undefined value, no subsequently added handlers will be called. If throws an error, it is sent back to the bot (app) as an error response. May also return a Promise.
onRequest.removeHandler(subject, handler): this
subjectstringName of the request.handler(string, any => void|any|Promise)The same handler that was passed toonRequest.addHandler.
Remove a request handler.
close(): void
Unregister all event listeners. After this the transmitter is usable no more. Do it before you try to create another Transmitter.
emitEvent(receivers, subject, data): void
receiversstring[]Receivers. Can also include@bot.subjectstringName of the event.dataany?Data to send with the event. Must be serializable.
Send an event to pages and/or the bot.
sendRequest(receiver, subject, data): Promise
receiversrtingReceiver of the request. Can only be@bot.subjectstringName of the request.dataany?Data to send with the request. Must be serializable.
Send a request to pages and/or the bot. If an error response is received, returns a promise that rejects with a Transmitter.Failure that contains attached data. It is to distinguish an error response from other errors like network errors, timeout, etc.
forwardEvent(subject, sender|senders, receiever|receivers, [transform]): Function
subjectstringEvent to forward.sender|sendersstring|string[]Can be pages or@bot.receiver|receiversstring|string[]Can be pages or@bot.transformobject?Transform object. Used to transform event data or to change its subject.- Returns:
FunctionCall it to cancel forwarding.
Example:
const transmitter = new Transmitter;
const unforward = transmitter.forwardEvent('tip', '@bot', 'statistics', {
redirect: 'tip-received', // Change subject: tip -> tip-received
transform: ({ tipper, amount }) => ({ tipper, amount: amount / 20 }) // Transform event data: tokens -> US dollars
});Transform functions can also return a Promise.
forwardEvents(subjects, sender|senders, receiever|receivers, [transform]): Function
subjectsstring[]Events to forward.sender|sendersstring|string[]Can be pages or@bot.receiver|receiversstring|string[]Can be pages or@bot.transformobject?Transform object. Used to transform event data or to change its subject.- Returns:
FunctionCall it to cancel forwarding.
Example:
const transmitter = new Transmitter;
const unforward = transmitter.forwardEvents(
['tip', 'private-show-start', 'private-show-end'], '@bot', 'statistics',
{
tip: {
redirect: 'tip-received', // Change subject: tip -> tip-received
transform: ({ tipper, amount }) => ({ tipper, amount: amount / 20 }) // Transform event data: tokens -> US dollars
},
$default: {
redirect: subject => subject + 'ed' // Change subject: private-show-{start,end} -> private-show-{started,ended}
}
}
);Transform functions can also return a Promise.
forwardRequest(subject, sender|senders, receiver, [transform]): Function
subjectstringRequest to forward.sender|sendersstring|string[]Can only be pages.receiverstringCan only be@bot.transformobject?Transform object. Used to transform request and response payload or to change subject.- Returns:
FunctionCall it to cancel forwarding.
Example:
const transmitter = new Transmitter;
const unforward = transmitter.forwardRequest('my-request', ['page1', 'page2'], '@bot', {
redirect: 'my-request-in-@bot', // Change subject: my-request -> my-request-in-@bot
async transformRequest(data) { // Transform payload before it is sent to @bot
// do something awfully asynchronous, for example
return data;
}
});Transform functions can also return a Promise.
forwardRequests(subjects, sender|senders, receiver, [transform]): Function
subjectsstring[]Request to forward.sender|sendersstring|string[]Can only be pages.receiverstringCan only be@bot.transformobject?Transform object. Used to transform request and response payload or to change subject.- Returns:
FunctionCall it to cancel forwarding.
Example:
const transmitter = new Transmitter;
const unforward = transmitter.forwardRequests(
['my-request1', 'my-request2'], 'page8', '@bot',
{
'my-request1': {
redirect: subject => subject + subject, // Redirect: my-request1 -> 'my-request1my-request1'
transformRequest(data) { // Transform payload before it is sent to @bot
// do anything you like
return data;
},
async transformResponse(data) { // Transform response payload before getting it to sender
/* If error response */
if (data instanceof Transmitter.Failure) {
console.log(`Let's log our error and pass it on untouched: `, data);
throw data;
}
/* else if successul response */
const stuff = await getSomeStuff();
if (stuff.isBad()) {
data.stuff = null;
data.badStuff = true;
throw new Transmitter.Failure(data); // Response with an error even though a successful response was received
}
data.stuff = stuff;
return data;
}
},
$default: {
redirect: 'somewhere' // Redirect: my-request2 -> somewhere
}
}
);Transform functions can also return a Promise.
Class: Failure
Re-exported from Channel.Failure. A subclass of fb.Error that represents an error response from sendRequest(receiver, subject, data).
new Failure(data)
dataany?default: {}Data to attach.
name
string=== 'Failure'
type
string=== 'ERR_FAILURE'
