Geckoboard
Creates a writable stream for pushing data to Geckoboard.
Installation
$ npm install flow-to-geckoboard
For use in the browser, use browserify.
Usage
var stream = ;
stream( options )
Creates a writable stream for pushing data to Geckoboard.
var oStream =;// Data for a Geck-o-Meter widget:var data ='item': Math * 100'min':'value': 0'max':'value': 100;// Write the data to the stream:oStream;// End the stream:oStream;
The function accepts the following options:
- objectMode:
boolean
which specifies whether a stream should operate in object mode. Default:false
. - decodeStrings:
boolean
which specifies whether writtenstrings
should be decoded intoBuffer
objects. Default:true
. - highWaterMark: specifies the
Buffer
level at whichwrite()
calls start returningfalse
. Default:16
(16KB).
To set stream options
,
var opts ='key': '<your_key_goes_here>''id': '<your_widget_id_goes_here>''objectMode': true'decodeStrings': false'highWaterMark': 64;var oStream = ;
stream.factory( options )
Creates a reusable stream factory. The factory method ensures streams are configured identically by using the same set of provided options
.
var opts ='key': '<your_key_goes_here>''id': '<your_widget_id_goes_here>';var factory = stream;// Create 10 identically configured streams...var streams = ;for var i = 0; i < 10; i++streams;
stream.objectMode( options )
This method is a convenience function to create streams which always operate in objectMode
. The method will always override the objectMode
option in options
.
var opts ='key': '<your_key_goes_here>''id': '<your_widget_id_goes_here>';var data ='item': Math * 100'min':'value': 0'max':'value': 100;var oStream = stream;oStream;oStream;
Examples
var Stream = ;var oStreamdatai;oStream ='key': '<your_key_goes_here>' // INSERT KEY HERE //'id': '<your_widget_id_goes_here>' // INSERT WIDGET ID HERE //;{return {oStream;};}{oStream;}for i = 0; i < 100; i++data ='item': Math * 100'min':'value': 0'max':'value': 100;// Stagger posting values to Geckoboard:;// Close the stream:;
To run the example code from the top-level application directory,
$ node ./examples/index.js
CLI
Installation
To use the module as a general utility, install the module globally
$ npm install -g flow-to-geckoboard
Usage
Usage: flow-to-geckoboard --key <key> --widget <widget_id> [options]Options:-h, --help Print this message.-V, --version Print the package version.--key [key] Geckoboard API key.--widget [widget] Geckoboard widget id.-hwm, --highwatermark [hwm] Specify how much data can be buffered into memorybefore applying back pressure. Default: 16KB.-nds, --no-decodestrings Prevent strings from being converted into buffersbefore streaming to destination. Default: false.-om, --objectmode Write any value rather than only buffers and strings.Default: false.
The flow-to-geckoboard
command is available as a standard stream.
$ <stdout> | flow-to-geckoboard --key <key> --widget <widget_id>
Notes
- In addition to the command-line
key
andwidget
options, thekey
andwidget
options may be specified via environment variables:GECKOBOARD_API_KEY
andGECKOBOARD_WIDGET_ID
. The command-line options always take precedence.
Examples
$ echo '{"item":50,"min":{"value":0},"max":{"value":100}}' | flow-to-geckboard --key <key> --widget <widget_id>
Setting credentials using environment variables:
$ GECKOBOARD_API_KEY=<key> GECKOBOARD_WIDGET_ID=<widget_id> echo '{"item":67,"min":{"value":0},"max":{"value":100}}' | flow-to-geckboard
For local installations, modify the above command to point to the local installation directory; e.g.,
$ echo '{"item":32,"min":{"value":0},"max":{"value":100}}' | ./node_modules/.bin/flow-to-geckoboard --key <key> --widget <widget_id>
Or, if you have cloned this repository and run npm install
, modify the command to point to the executable; e.g.,
$ echo '{"item":49,"min":{"value":0},"max":{"value":100}}' | node ./bin/cli --key <key> --widget <widget_id>
Tests
Unit
Unit tests use the Mocha test framework with Chai assertions. To run the tests, execute the following command in the top-level application directory:
$ make test
All new feature development should have corresponding unit tests to validate correct functionality.
Test Coverage
This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:
$ make test-cov
Istanbul creates a ./reports/coverage
directory. To access an HTML version of the report,
$ make view-cov
License
Copyright
Copyright © 2015. The Flow.io Authors.