From 2c2df87058326322207ac7800f814f927ee327f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabio=20Jos=C3=A9?= Date: Wed, 17 Jul 2019 16:40:56 -0300 Subject: [PATCH] Removing the cyclomatic complexity MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fabio José --- lib/bindings/http/emitter_binary_0_1.js | 82 +++++++++++++++++-------- 1 file changed, 56 insertions(+), 26 deletions(-) diff --git a/lib/bindings/http/emitter_binary_0_1.js b/lib/bindings/http/emitter_binary_0_1.js index 642beb9..bf9f0e8 100644 --- a/lib/bindings/http/emitter_binary_0_1.js +++ b/lib/bindings/http/emitter_binary_0_1.js @@ -2,6 +2,48 @@ var axios = require("axios"); const Constants = require("./constants.js"); +const headerByGetter = {}; + +headerByGetter["getContenttype"] = { + name : Constants.HEADER_CONTENT_TYPE, + parser : (v) => v +}; + +headerByGetter["getType"] = { + name : "CE-EventType", + parser : (v) => v +}; + +headerByGetter["getSpecversion"] = { + name : "CE-CloudEventsVersion", + parser : (v) => v +}; + +headerByGetter["getSource"] = { + name : "CE-Source", + parser : (v) => v +}; + +headerByGetter["getId"] = { + name : "CE-EventID", + parser : (v) => v +}; + +headerByGetter["getEventTypeVersion"] = { + name : "CE-EventTypeVersion", + parser : (v) => v +}; + +headerByGetter["getTime"] = { + name : "CE-EventTime", + parser : (v) => v +}; + +headerByGetter["getSchemaurl"] = { + name : "CE-SchemaURL", + parser : (v) => v +}; + function HTTPBinary(configuration){ this.config = JSON.parse(JSON.stringify(configuration)); @@ -22,39 +64,27 @@ HTTPBinary.prototype.emit = function(cloudevent){ // Always set stuff in _config var _headers = _config["headers"]; - // OPTIONAL CONTENT TYPE ATTRIBUTE - if(cloudevent.getContenttype()) { - _headers[Constants.HEADER_CONTENT_TYPE] = cloudevent.getContenttype(); - } - - // REQUIRED ATTRIBUTES - _headers["CE-EventType"] = cloudevent.getType(); - _headers["CE-CloudEventsVersion"] = cloudevent.getSpecversion(); - _headers["CE-Source"] = cloudevent.getSource(); - _headers["CE-EventID"] = cloudevent.getId(); - - if(cloudevent.getEventTypeVersion()) { - _headers["CE-EventTypeVersion"] = cloudevent.getEventTypeVersion(); - } - - if(cloudevent.getTime()) { - _headers["CE-EventTime"] = cloudevent.getTime(); - } - if(cloudevent.getSchemaurl()) { - _headers["CE-SchemaURL"] = cloudevent.getSchemaurl(); - } + Object.keys(headerByGetter) + .filter(getter => cloudevent[getter]()) + .forEach(getter => { + let header = headerByGetter[getter]; + _headers[header.name] = + header.parser( + cloudevent[getter]() + ); + }); // Set the cloudevent payload _config["data"] = cloudevent.format().data; // EXTENSION CONTEXT ATTRIBUTES var exts = cloudevent.getExtensions(); - for(var ext in exts){ - if({}.hasOwnProperty.call(exts, ext)){ - let capsExt = ext.charAt(0).toUpperCase() + ext.slice(1) + Object.keys(exts) + .filter(ext => Object.hasOwnProperty.call(exts, ext)) + .forEach(ext => { + let capsExt = ext.charAt(0).toUpperCase() + ext.slice(1); _headers["CE-X-" + capsExt] = exts[ext]; - } - } + }); // Return the Promise return axios.request(_config);