bandiera-client
Version:
Bandiera is a simple, stand-alone feature flagging service that is not tied to any existing web framework or language. This is a client for talking to the web service.
153 lines (106 loc) • 3.89 kB
Markdown
Bandiera Client (Node.js)
=========================
This is a client for talking to the [Bandiera][bandiera] feature flagging service from a [Node.js][node] application.
This client currently only implements the read methods of the [v2 Bandiera API][bandiera-api].
[![NPM version][shield-npm]][info-npm]
[![Node.js version support][shield-node]][info-node]
[![Build status][shield-build]][info-build]
[![Dependencies][shield-dependencies]][info-dependencies]
[![MIT licensed][shield-license]][info-license]
Installation
------------
```sh
npm install bandiera-client
```
or add `bandiera-client` to your `package.json` file.
Usage
-----
Create an instance of the bandiera client:
```js
var bandiera = require('bandiera-client');
var client = bandiera.createClient('http://your-bandiera-server.com');
```
Each method of the client requires a callback. These callbacks accept two arguments, the first is an error object or `null` the second contains the response.
In the examples below, `params` is an object containing query parameters to send as part of the request to Bandiera. This argument is optional in all of the client methods. See the [API documentation][bandiera-api] for available parameters.
Get features for all groups:
```js
client.getAll(params, function (error, groups) {
/*
groups == {
group_name: {
feature_name: Boolean,
...
},
...
}
*/
});
// or
client.getAll(function (error, groups) {
// ...
});
```
Get features for a group:
```js
client.getFeaturesForGroup('group_name', params, function (error, features) {
/*
features == {
feature_name: Boolean,
...
}
*/
});
// or
client.getFeaturesForGroup('group_name', function (error, features) {
// ...
});
```
Get an individual feature:
```js
client.getFeature('group_name', 'feature_name', params, function (error, feature) {
/*
feature = Boolean
*/
});
// or
client.getFeature('group_name', 'feature_name', function (error, feature) {
// ...
});
```
Options
-------
The Node.js Bandiera client also accepts options in construction which allow you to tweak the client's behaviour:
```js
var client = bandiera.createClient('http://your-bandiera-server.com', {
// options go here
});
```
### `logger.debug` (function)
A logging function which will be called with debug messages. This should accept the same arguments as `console.log`. Defaults to an empty function.
### `logger.warn` (function)
A logging function which will be called with warning messages. This should accept the same arguments as `console.log`. Defaults to an empty function.
### `timeout` (number)
A timeout (in milliseconds) after which an API request should fail. Defaults to `400`.
Contributing
------------
If you would like to contribute please make sure that the tests pass and that the code lints successfully.
```sh
make lint test
```
License
-------
Copyright © 2018 Springer Nature.
Node Bandiera client is licensed under the [MIT License][info-license].
[bandiera]: https://github.com/nature/bandiera
[bandiera-api]: https://github.com/nature/bandiera/wiki/API-Documentation
[node]: http://nodejs.org
[info-dependencies]: https://gemnasium.com/springernature/bandiera-client-node
[info-license]: LICENSE
[info-node]: package.json
[info-npm]: https://www.npmjs.com/package/bandiera-client
[info-build]: https://travis-ci.org/springernature/bandiera-client-node
[shield-dependencies]: https://img.shields.io/gemnasium/springernature/bandiera-client-node.svg
[shield-license]: https://img.shields.io/badge/license-MIT-blue.svg
[shield-node]: https://img.shields.io/badge/node.js%20support-0.10–6-brightgreen.svg
[shield-npm]: https://img.shields.io/npm/v/bandiera-client.svg
[shield-build]: https://img.shields.io/travis/springernature/bandiera-client-node/master.svg