From 9f2ff162b9c68a0a3c478ff13ff252e1ee695423 Mon Sep 17 00:00:00 2001 From: blacksonic Date: Mon, 22 Feb 2016 12:29:41 +0100 Subject: [PATCH] feat(request): rename to setHeader BREAKING CHANGE: renamed addHeader to setHeader --- .eslintrc | 3 +++ request.spec.js | 4 ++-- requestOption.js | 30 ++++++++++++++++++++---------- requestOption.spec.js | 4 ++-- 4 files changed, 27 insertions(+), 14 deletions(-) diff --git a/.eslintrc b/.eslintrc index cfcd28c..7b409e1 100644 --- a/.eslintrc +++ b/.eslintrc @@ -7,6 +7,9 @@ "globals": { "expect": true }, + "rules": { + "security/detect-object-injection": 0 + }, "extends": [ "emarsys" ] diff --git a/request.spec.js b/request.spec.js index b4fd42d..eb4338e 100644 --- a/request.spec.js +++ b/request.spec.js @@ -52,7 +52,7 @@ describe('SuiteRequest', function() { it('should sign headers with non string values', function() { var suiteRequest = SuiteRequest.create('key-id', 'secret', requestOptions); - requestOptions.addHeader(['x-customer-id', 15]); + requestOptions.setHeader(['x-customer-id', 15]); this.sandbox.stub(request, 'post', function(options, callback) { expect(options.headers['x-ems-auth']) @@ -64,7 +64,7 @@ describe('SuiteRequest', function() { }); it('signs extra headers too', function() { - requestOptions.addHeader(['extra-header', 'header-value']); + requestOptions.setHeader(['extra-header', 'header-value']); var suiteRequest = SuiteRequest.create('key-id', 'secret', requestOptions); this.sandbox.stub(request, 'get', function(options, callback) { diff --git a/requestOption.js b/requestOption.js index 19c506d..db02f30 100644 --- a/requestOption.js +++ b/requestOption.js @@ -37,19 +37,29 @@ SuiteRequestOption.prototype = { this.port = port; }, - addHeader: function(header) { - var exists = false; + setHeader: function(header) { + var key = header[0]; + var value = header[1]; - this.headers.forEach(function(addedHeader) { - if (addedHeader[0] === header[0]) { - addedHeader[1] = header[1]; - exists = true; - } - }); - - if (!exists) { + var index = this._headerIndexOf(key); + if (index === -1) { this.headers.push(header); + } else { + this.headers[index][1] = value; + } + }, + + _headerIndexOf: function(key) { + var index = -1; + + for (var i = 0; i < this.headers.length; i++) { + if (this.headers[i][0] === key) { + index = i; + break; + } } + + return index; }, toHash: function() { diff --git a/requestOption.spec.js b/requestOption.spec.js index a232b97..b120da6 100644 --- a/requestOption.spec.js +++ b/requestOption.spec.js @@ -17,7 +17,7 @@ describe('SuiteRequestOption', function() { var dummyHeader = ['header-name', 'header-value']; var requestOptions = new SuiteRequestOption(dummyServiceConfig.host, dummyServiceConfig); - requestOptions.addHeader(dummyHeader); + requestOptions.setHeader(dummyHeader); expect(requestOptions.toHash().headers).to.include(dummyHeader); }); @@ -26,7 +26,7 @@ describe('SuiteRequestOption', function() { var expectedContentTypeHeader = ['content-type', 'text/csv']; var requestOptions = new SuiteRequestOption(dummyServiceConfig.host, dummyServiceConfig); - requestOptions.addHeader(expectedContentTypeHeader); + requestOptions.setHeader(expectedContentTypeHeader); var contentTypeHeader = requestOptions.toHash().headers.filter(function(header) { return header[0] === 'content-type';