ham-dex-publisher
v1.4.4
Published
Publish data, notifications and api for the HAM DEX ESB.
Downloads
18
Readme
ham-dex-publisher
Publish data, notifications and api for the HAM DEX ESB.
Usage
First, install the package using npm:
npm install ham-dex-publisher --save
options = {
"publisher": process.env.HAM_DEX_PUBLISHER || "Demo-Publisher",
"credentials": {
"username": process.env.HAM_DEX_USERNAME || "demo-user",
"password": process.env.HAM_DEX_PASSWORD || "demo-password"
},
"esb": {
"protocol": "https",
"host": process.env.HAM_DEX_HOST || "ham-dex.local",
"port": process.env.HAM_DEX_PORT || 3443
},
"callback": {
"protocol": "http",
// If you leave out "host", HAM DEX Publisher will determine the current IP address
// "host": process.env.HOST || "my-dns-name.local",
"port": process.env.PORT || 3000
}
};
With that you can instantiate an instance of the ham dex subscriber including the reference to the express app for the notification endpoint:
var publisher = require("ham-dex-publisher");
publisher = publisher(app, options);
To bind the publisher to a sub path it could be given as third parameter and the first parameter is the corresponding route object:
publisher = publisher(route, options, 'dataobject');
To provide an inventory you simply call the registerInventory with the function returning the data:
publisher.registerInventory(function(path) {
// Return the inventory
return [];
});
There are two methods for post and put notifications to subscribers.
publisher.sendNotificationPost(data);
publisher.sendNotificationPut(data);
There is also a method for sending a delete notification to subscribers.
publisher.sendNotificationDelete(id);
The input service encapsulates CRUD methods for subscribers to modify the inventory.
publisher.registerInput(function(data) {
// PUT
// Process data
return true;
}, function(data) {
// POST
// Process data
return true;
}, function(id) {
// DELETE
// Process data
return true;
});
The second input service encapsulates CRUD methods for subscribers to modify the inventory with events post, put and delete.
inputService = publisher.registerInputEvents();
inputService.on('post', function(header, body) {
console.log('Received data: ' + JSON.stringify(body));
return true;
});
To provide an api endpoint for subscribers the method registerGateway takes a callback function with the http method, the path and the body data.
publisher.registerGateway(function(method, path, data) {
// Process data
return { 'ok': true };
});
Also for the api gateay exists an event based version.
gatewayApi = publisher.registerGatewayEvents();
gatewayApi.on('post', function(header, path, body) {
console.log('Received data: ' + JSON.stringify(body));
return true;
});
License
ISC