ham-dex-publisher

1.4.4 • Public • Published

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

Readme

Keywords

Package Sidebar

Install

npm i ham-dex-publisher

Weekly Downloads

2

Version

1.4.4

License

ISC

Unpacked Size

22 kB

Total Files

4

Last publish

Collaborators

  • derdobi