hobknob-client-nodejs
A node client to retrieve feature toggles stored in Etcd.
Installation
npm install hobknob-client-nodejs
Usage
var Client = ; var client = "application-name" etcdHost: "127.0.0.1" etcdPort: 4001 cacheIntervalMs: 60000; client; client; client;
Important Note
The "error" event must be subscribed to, otherwise errors will cause the application to exit
client;
Etcd
Feature toggles are stored in Etcd using the following convention:
http://host:port/v2/keys/v1/toggles/applicationName/toggleName
API
Client(applicationName, [config])
Creates a new feature toggle client
var Client = ;var client = "application-name" etcdHost: "127.0.0.1" ;
applicationName
the name of the application used to find feature togglesconfig
(optional)etcdHost
(default: "127.0.0.1")etcdPort
(default: 4001)cacheIntervalMs
interval for the cache update, which loads all the applications toggles into memory (default: 60000)
.on(eventName, callback)
Subscribes to events emitted by the client.
eventName
- name of the event to listen to (see below for possible event names)callback
- callback that is called with different arguments per event when the event is fired (see below for event callbacks)
Events:
error
- function(err){ }` // required, will return a javascript error objectupdated-cache
- function(togglesChanged){ }` // optional, will return a list of toggles that changed in the last update
example:
client; // output name: 'mytoggle' old: false new: true ...
.getOrDefault(toggleName, [secondaryKey], defaultValue)
Gets the value of a feature toggle (true
or false
) if exists, otherwise return the default value (true
or false
)
var isFeatureToggle1Enabled = client;
toggleName
- the name of the toggle, used with the application name to get the feature toggle valuesecondaryKey
- [optional] used when accessing a multi feature-toggle (e.g.client.getOrDefault('domainFeature', 'com', false)
)defaultValue
- the value to return if the toggle value is not found or if there is an error
.getAll()
Gets the values for all features for the application.
var features = client; featuresshouldbe;