From e3c38958699a14ed827b493e336b1f82800839a9 Mon Sep 17 00:00:00 2001 From: Robert Raposa Date: Tue, 12 Mar 2019 09:20:31 -0400 Subject: [PATCH] Use form-urlencoded npm package. Switch from custom function to form-urlencoded to perform form url encoding. ARCH-390 --- package-lock.json | 46 +++++++++++++------------------------- package.json | 1 + src/analytics/analytics.js | 15 ++----------- 3 files changed, 19 insertions(+), 43 deletions(-) diff --git a/package-lock.json b/package-lock.json index 52a2186..c610383 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9208,6 +9208,11 @@ "mime-types": "^2.1.12" } }, + "form-urlencoded": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/form-urlencoded/-/form-urlencoded-3.0.0.tgz", + "integrity": "sha512-zSgBjyO5Yo3TCfElJKqlSBGOEq8lZjltZAYqew4X5trf4AbH4sZhBesvywy7IpD1mfbu8JS6733V3zv3YdIW1g==" + }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -9344,8 +9349,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -9366,14 +9370,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -9388,20 +9390,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -9518,8 +9517,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -9531,7 +9529,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -9546,7 +9543,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -9554,14 +9550,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -9580,7 +9574,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -9661,8 +9654,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -9674,7 +9666,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -9760,8 +9751,7 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -9797,7 +9787,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -9817,7 +9806,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -9861,14 +9849,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, diff --git a/package.json b/package.json index 4c1863b..30c4edf 100755 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "copy-webpack-plugin": "^4.6.0", "email-prop-type": "^1.1.5", "font-awesome": "^4.7.0", + "form-urlencoded": "^3.0.0", "glob": "^7.1.3", "history": "^4.7.2", "i18n-iso-countries": "^3.7.8", diff --git a/src/analytics/analytics.js b/src/analytics/analytics.js index d33499e..7e1b874 100755 --- a/src/analytics/analytics.js +++ b/src/analytics/analytics.js @@ -1,3 +1,4 @@ +import formurlencoded from 'form-urlencoded'; import apiClient from '../config/apiClient'; import { configuration } from '../config/environment'; import { snakeCaseObject } from '../services/utils'; @@ -6,18 +7,6 @@ import LoggingService from '../services/LoggingService'; const eventLogApiBaseUrl = `${configuration.LMS_BASE_URL}/event`; -// Uses a JSON as a source of key value pairs for x-www-form-urlencoded output. -// Note should be handled by axios, but is not built in. -// - see https://github.com/axios/axios/issues/97 -function xWwwFormUrlEncoded(json) { - const data = []; - Object.keys(json).forEach((key) => { - data.push(`${encodeURIComponent(key)}=${encodeURIComponent(json[key])}`); - }); - return data.join('&'); -} - - // Sends events to Segment and downstream function handleTrackEvents(eventName, properties) { // Simply forward track events to Segment @@ -36,7 +25,7 @@ function logEvent(eventType, eventData) { }; return apiClient.post( eventLogApiBaseUrl, - xWwwFormUrlEncoded(serverData), + formurlencoded(serverData), { headers: { 'Content-Type': 'application/x-www-form-urlencoded',