Validating extension types

Signed-off-by: Fabio José <fabiojose@gmail.com>
This commit is contained in:
Fabio José 2019-10-31 17:50:54 -03:00
parent 0d8c8a13ae
commit 1905266d1f
1 changed files with 15 additions and 2 deletions

View File

@ -1,11 +1,20 @@
const uuid = require("uuid/v4"); const uuid = require("uuid/v4");
const empty = require("is-empty"); const empty = require("is-empty");
const Ajv = require("ajv"); const Ajv = require("ajv");
const URI = require("uri-js");
const { const {
asData asData,
isBoolean,
isInteger,
isString,
isDate,
isBinary
} = require("../utils/fun.js"); } = require("../utils/fun.js");
const isValidType = (v) =>
(isBoolean(v) || isInteger(v) || isString(v) || isDate(v) || isBinary(v));
const RESERVED_ATTRIBUTES = { const RESERVED_ATTRIBUTES = {
type: "type", type: "type",
specversion: "specversion", specversion: "specversion",
@ -165,7 +174,11 @@ Spec1.prototype.getData = function() {
Spec1.prototype.addExtension = function(key, value){ Spec1.prototype.addExtension = function(key, value){
if(!RESERVED_ATTRIBUTES.hasOwnProperty(key)){ if(!RESERVED_ATTRIBUTES.hasOwnProperty(key)){
this.payload[key] = value; if(isValidType(value)){
this.payload[key] = value;
} else {
throw {message: "Invalid type of extension value"};
}
} else { } else {
throw {message: "Reserved attribute name: '" + key + "'"}; throw {message: "Reserved attribute name: '" + key + "'"};
} }