Skip to content

Instantly share code, notes, and snippets.

@tashian
Created August 11, 2015 17:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tashian/c29fd3d15f73897a5df7 to your computer and use it in GitHub Desktop.
Save tashian/c29fd3d15f73897a5df7 to your computer and use it in GitHub Desktop.
A node-based HTTP API query buffer for Keen.io
KeenIO = require 'keen-js'
Q = require 'q'
class KeenClient
constructor: ->
@client = new KeenIO(
projectId: process.env.KEEN_PROJECT_ID
readKey: process.env.KEEN_READ_KEY
)
@started = false
@queries = []
start: ->
unless @started
setInterval =>
if @queries.length > 0
[query, cb] = @queries.shift()
@client.run(query, cb)
, 1000
@started = true
schedule: (query, cb) ->
@queries = @queries.concat [[query, cb]]
scheduleWithPromise: (query) ->
deferred = Q.defer()
@schedule(query, (err, response) ->
if err
console.log "Query error #{err}"
deferred.reject(err)
else
deferred.resolve(response)
)
deferred.promise
KeenClient.Query = KeenIO.Query
module.exports = KeenClient
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment