UNPKG

openhim-mediator-utils

Version:
122 lines (84 loc) 4.64 kB
# OpenHIM mediator utils This package contains a few useful functions to make it easier to develop OpenHIM mediators. When creating a node.js mediator you can make use of it by installing it through NPM as follows: ```sh npm install --save openhim-mediator-utils ``` You can then use the package as follows: ```js import utils from 'openhim-mediator-utils'; utils.registerMediator(...); utils.authenticate(...); utils.genAuthHeaders(...); utils.activateHeartbeat(...); utils.deactivateHearbeat(...); utils.fetchConfig(...); ``` For commonjs projects use versions before version 1.0.0. These versions are still supported. ```sh npm install --save openhim-mediator-utils@0 ``` ```js const utils = require('openhim-mediator-utils) ``` ## API details ### Mediator Registration #### .registerMediator(options, mediatorConfig, callback) Register this mediator with OpenHIM core using the supplied mediatorConfig. This function takes an options object, the mediator config to register this mediator with and a callback as parameters. The options object has the following format: * `options.apiURL` - the URL of the OpenHIM core API eg. "https://localhost:8080" * `options.username` - the username of the user to be authenticate with * `options.password` - the password for the user `mediatorConfig` is an object that follows the mediatorConfig structure: <http://openhim.readthedocs.org/en/latest/dev-guide/mediators.html#mediator-registration> The callback is called with an error object if an error occurs otherwise it is called with nothing. ### OpenHIM API Authentication #### .authenticate(options, callback) Fetches authentication detail from the OpenHIM core to use for future communication, options must contain: * `options.apiURL` - the URL of the OpenHIM core API eg. "https://localhost:8080" * `options.username` - the username of the user to be authenticated * `options.trustSelfSigned` - [optional] boolean which defaults to false - if set to true, ignore self signed certificate errors (for non-production use) callback will be called with an Error object if an error occurs, otherwise the body received from the OpenHIM-core server is returned. This is an object like the following `{salt: <userSalt>, ts: <timestampOfServer>}`. #### .genAuthHeaders(options) Generates authentication headers to make an authenticated API requests. This can only be used after the `.authenticate()` function has been called for this user. The username and password of the user must be passed to this function as strings in the options object (eg. `{username: '<username>', password: '<password>'}`). The authentication headers are returned as a headers object. eg. ```js headers = { 'Authorization': 'Basic <token>' } ``` ### Mediator Heartbeats and Configuration #### .activateHeartbeat(options, interval) Begins sending heartbeats to the OpenHIM-core server (also returns any config changes). This function takes an options object with the following properties: * `options.apiURL` - the URL of the OpenHIM core API eg. "https://localhost:8080" * `options.username` - the username of the user to be authenticated * `options.password` - the password for the user * `options.urn` - the URN of the mediator to send heartbeats for * `options.trustSelfSigned` - [optional] boolean which defaults to false - if set to true, ignore self signed certificate errors (for non-production use) It also takes an interval parameter which is the interval to send heartbeats in ms. This parameter default to 10s. This function returns an event emitter which emits a 'config' event with a config object each time the mediator config is changed on the OpenHIM. If an error occurs an 'error' event is emitted with an error object. #### .deactivateHeartbeat() Deactivates the sending of heartbeats. #### .fetchConfig(options, callback) Forces the latest config to be returned from the OpenHIM-core. This is useful when you need to fetch initial config at mediator startup (if you are just interested in the latest config updates use rather `.activateHeartbeat(...)` above). This function takes an options object with the following properties: * `options.apiURL` - the URL of the OpenHIM core API eg. "https://localhost:8080" * `options.username` - the username of the user to be authenticated * `options.password` - the password for the user * `options.trustSelfSigned` - [optional] boolean which default to false - if set to true, ignore self signed certificate errors (for non-production use) callback will be called with an Error object if an error occurs, otherwise the config received from the OpenHIM-core server is returned.