diff --git a/lib/api/metric.js b/lib/api/metric.js index ab3245b..883ab93 100644 --- a/lib/api/metric.js +++ b/lib/api/metric.js @@ -1,13 +1,36 @@ -var metric_api = function(){ +var v8type = require('v8type'); -}; -metric_api.prototype.add_metric = function(){ +var metric_api = function(){}; +metric_api.prototype.add_metric = function(metric, callback){ + var metrics = { + 'series': [metric] + }; + this.add_metrics(metrics, callback); }; -metric_api.prototype.add_metrics = function(){ +metric_api.prototype.add_metrics = function(metrics, callback){ + if(!v8type.is(metrics, v8type.OBJECT)){ + throw new Error('`metrics` parameter must be an object'); + } + + if(!metrics['series'] || !v8type.is(metrics['series'], v8type.ARRAY)){ + throw new Error('`metrics["series"]` parameter must be an array'); + } + + for(var i in metrics['series']){ + var metric = metrics['series'][i]; + if(!metric['metric']){ + throw new Error('metric["metric"] is required'); + } + + if(!metric['points'] || !v8type.is(metric['points'], v8type.ARRAY)){ + throw new Error('metric["points"] must be an array'); + } + } + this.request('POST', '/series', {body: metrics}, callback); }; return module.exports = metric_api;