diff --git a/lib/cloudevent.js b/lib/cloudevent.js index 4b3abd9..def107f 100644 --- a/lib/cloudevent.js +++ b/lib/cloudevent.js @@ -6,122 +6,117 @@ const Formatter = require("./formats/json/formatter.js"); * * https://en.wikipedia.org/wiki/Builder_pattern */ -function Cloudevent(_spec, _formatter) { - this.spec = (_spec) ? new _spec(Cloudevent) : new Spec(Cloudevent); - this.formatter = (_formatter) ? new _formatter() : new Formatter(); +class CloudEvent { + constructor(_spec, _formatter) { + this.spec = (_spec) ? new _spec(CloudEvent) : new Spec(CloudEvent); + this.formatter = (_formatter) ? new _formatter() : new Formatter(); - // The map of extensions - this.extensions = {}; + // The map of extensions + this.extensions = {}; + } + + getFormats() { + return { json: Formatter }; + } + + format() { + // Check the constraints + this.spec.check(); + + // To run asData() + this.getData(); + + // Then, format + return this.formatter.format(this.spec.payload); + } + + toString() { + return this.formatter.toString(this.spec.payload); + } + + type(type) { + this.spec.type(type); + return this; + } + + getType() { + return this.spec.getType(); + } + + specversion(version) { + return this.spec.specversion(version); + } + + getSpecversion() { + return this.spec.getSpecversion(); + } + + source(_source) { + this.spec.source(_source); + return this; + } + + getSource() { + return this.spec.getSource(); + } + + id(_id) { + this.spec.id(_id); + return this; + } + + getId() { + return this.spec.getId(); + } + + time(_time) { + this.spec.time(_time); + return this; + } + + getTime() { + return this.spec.getTime(); + } + + schemaurl(_schemaurl) { + this.spec.schemaurl(_schemaurl); + return this; + } + + getSchemaurl() { + return this.spec.getSchemaurl(); + } + + dataContenttype(_contenttype) { + this.spec.dataContenttype(_contenttype); + return this; + } + + getDataContenttype() { + return this.spec.getDataContenttype(); + } + + data(_data) { + this.spec.data(_data); + return this; + } + + getData() { + return this.spec.getData(); + } + + addExtension(key, value) { + this.spec.addExtension(key, value); + + // Stores locally + this.extensions[key] = value; + + return this; + } + + getExtensions() { + return this.extensions; + } } -/* - * To format the payload using the formatter - */ -Cloudevent.prototype.format = function() { - // Check the constraints - this.spec.check(); - - // To run asData() - this.getData(); - - // Then, format - return this.formatter.format(this.spec.payload); -}; - -Cloudevent.prototype.toString = function() { - return this.formatter.toString(this.spec.payload); -}; - -Cloudevent.prototype.type = function(type) { - this.spec.type(type); - return this; -}; - -Cloudevent.prototype.getType = function() { - return this.spec.getType(); -}; - -Cloudevent.prototype.specversion = function(version) { - return this.spec.specversion(version); -}; - -Cloudevent.prototype.getSpecversion = function() { - return this.spec.getSpecversion(); -}; - -Cloudevent.prototype.source = function(_source) { - this.spec.source(_source); - return this; -}; - -Cloudevent.prototype.getSource = function() { - return this.spec.getSource(); -}; - -Cloudevent.prototype.id = function(_id) { - this.spec.id(_id); - return this; -}; - -Cloudevent.prototype.getId = function() { - return this.spec.getId(); -}; - -Cloudevent.prototype.time = function(_time) { - this.spec.time(_time); - return this; -}; - -Cloudevent.prototype.getTime = function() { - return this.spec.getTime(); -}; - -Cloudevent.prototype.schemaurl = function(_schemaurl) { - this.spec.schemaurl(_schemaurl); - return this; -}; - -Cloudevent.prototype.getSchemaurl = function() { - return this.spec.getSchemaurl(); -}; - -Cloudevent.prototype.dataContenttype = function(_contenttype) { - this.spec.dataContenttype(_contenttype); - return this; -}; - -Cloudevent.prototype.getDataContenttype = function() { - return this.spec.getDataContenttype(); -}; - -Cloudevent.prototype.data = function(_data) { - this.spec.data(_data); - return this; -}; - -Cloudevent.prototype.getData = function() { - return this.spec.getData(); -}; - -Cloudevent.prototype.addExtension = function(key, value) { - this.spec.addExtension(key, value); - - // Stores localy - this.extensions[key] = value; - - return this; -}; - -Cloudevent.prototype.getExtensions = function() { - return this.extensions; -}; - -/* - * Export the formats - */ -Cloudevent.formats = { - json: Formatter, - "json0.1": Formatter -}; - -module.exports = Cloudevent; +module.exports = CloudEvent;