From dd573f1726240ec57f30718ce6b7fdf1850d1948 Mon Sep 17 00:00:00 2001 From: James Barwell Date: Thu, 1 Oct 2015 15:15:10 +0000 Subject: [PATCH] Validate metric name --- js/base_metric.js | 7 +++++++ js/base_metric.js.map | 2 +- src/base_metric.coffee | 8 +++++++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/js/base_metric.js b/js/base_metric.js index e16a433..8d00858 100644 --- a/js/base_metric.js +++ b/js/base_metric.js @@ -19,6 +19,9 @@ module.exports = BaseMetric = (function() { if (!this.name) { throw "Name is required"; } + if (!this.name_is_valid()) { + throw "Name " + this.name + " is not valid"; + } if (!this.help) { throw "Help is required"; } @@ -78,6 +81,10 @@ module.exports = BaseMetric = (function() { return lh; }; + BaseMetric.prototype.name_is_valid = function() { + return /^[a-zA-Z0-9_:]*$/.test(this.name); + }; + return BaseMetric; })(); diff --git a/js/base_metric.js.map b/js/base_metric.js.map index 89fc77b..a640b80 100644 --- a/js/base_metric.js.map +++ b/js/base_metric.js.map @@ -6,5 +6,5 @@ "base_metric.coffee" ], "names": [], - "mappings": "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" + "mappings": "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" } \ No newline at end of file diff --git a/src/base_metric.coffee b/src/base_metric.coffee index 75c4f22..258bf9c 100644 --- a/src/base_metric.coffee +++ b/src/base_metric.coffee @@ -19,6 +19,7 @@ module.exports = class BaseMetric @_labelKeys = null throw "Name is required" if !@name + throw "Name #{@name} is not valid" if !@name_is_valid() throw "Help is required" if !@help @_full_name = _.compact([ @namespace, @subsystem, @name ]).join("_") @@ -69,4 +70,9 @@ module.exports = class BaseMetric @_labelKeys = hash.keys(labels) if !@_labelKeys @_labelCache[lh] = labels - lh \ No newline at end of file + lh + + #---------- + + name_is_valid: () -> + /^[a-zA-Z0-9_:]*$/.test(this.name)