yodata-inbox-poller
simple poller for processing messages from a yodata (LDN) inbox.
Installation
npm install yodata-inbox-poller --save
Usage
const Service = ;const inboxURL = 'https://hsf-test.ds.bhhsresource.com/inbox/'; { // do something with the message; // optionally return an event return type: 'Action' actionStatus: 'CompletedActionStatus' object: message result: 'some result value' } const app = Service; app; appstart;
- The queue is polled continuously for messages.
- By default messages are processed one at a time – a new message won't be received until the first one has been processed.
Credentials
By default the poller will look for your api-key in process.env.YODATA_API_KEY
export YODATA_API_KEY=...
If you need to specify your credentials manually, you can use a pre-configured inbox instance.
const Service = ; const customInbox = async { try // fetch results and return in the following schema return type: 'inbox:fetch:completed' object: url result: messages: // array of fetched messages catch error throw type: 'inbox:fetch:failed' object: url error: errormessage result: error: error }; const app = inboxURL: "https://dave.yodata.me/inbox/" handleMessage: handleMessage inbox: customInbox; appstart;
API
new Poller(options)
Creates a new poller Service.
Options
inboxURL
- String - The inbox URLhandleMessage
- Function - A function to be called whenever a message is received.inbox
- Object optional pre-configured inbox to use (useful for testing with a mocked inbox);
poller.start()
Start polling for messages.
poller.stop()
Stop polling for messages.
Events
Each poller is an EventEmitter
and emits the following events:
// .start().emit("service:start") // .stop(error).emit("service:stop").emit("service:stop:completed") // .run(next) main event loop.emit("service:process:start").emit("service:process:completed").emit("service:process:failed") // _poll().emit("inbox:fetch:completed");.emit("inbox:fetch:failed").emit("inbox:empty") // .processResponse(inboxResponse).emit("response:process:completed").emit("response:process:failed") // .handleMessage(message).emit("message:process:completed").emit("message:process:failed")