From 5b885cf8148ebc2c8cd9c0bbd1314b88b24b9d40 Mon Sep 17 00:00:00 2001 From: Evan Sharp Date: Tue, 19 Jun 2018 10:53:21 -0400 Subject: [PATCH] fix(api-core): format postGet payload to standard --- packages/api-core/package.json | 3 +++ packages/api-core/src/api.js | 10 ++++++++++ packages/api-core/src/tests/api.test.js | 6 ++++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/api-core/package.json b/packages/api-core/package.json index a1fff761c..da76a7d8d 100644 --- a/packages/api-core/package.json +++ b/packages/api-core/package.json @@ -21,5 +21,8 @@ }, "publishConfig": { "access": "public" + }, + "dependencies": { + "qs": "^6.5.2" } } diff --git a/packages/api-core/src/api.js b/packages/api-core/src/api.js index 78d31e883..5ea9eb2b9 100644 --- a/packages/api-core/src/api.js +++ b/packages/api-core/src/api.js @@ -1,4 +1,5 @@ import AvLocalStorage from '@availity/localstorage-core'; +import qs from 'qs'; import API_OPTIONS from './options'; @@ -212,11 +213,20 @@ export default class AvApi { config.method = 'POST'; config.headers = config.headers || {}; config.headers['X-HTTP-Method-Override'] = 'GET'; + config.headers['Content-Type'] = config.headers['Content-Type'] || 'application/x-www-form-urlencoded'; config.url = this.getUrl(config); config.data = data; if (this.beforePostGet) { config.data = this.beforePostGet(config.data); } + if (typeof config.data !== 'string' && config.headers['Content-Type'] === 'application/x-www-form-urlencoded') { + config.data = qs.stringify(config.data, { + encode: false, + arrayFormat: 'repeat', + indices: false, + allowDots: true, + }); + } return this.request(config, this.afterPostGet); } diff --git a/packages/api-core/src/tests/api.test.js b/packages/api-core/src/tests/api.test.js index a02f9f8f7..2b9262b4f 100644 --- a/packages/api-core/src/tests/api.test.js +++ b/packages/api-core/src/tests/api.test.js @@ -766,10 +766,11 @@ describe('AvApi', () => { url: testUrl, headers: { 'X-HTTP-Method-Override': 'GET', + 'Content-Type': 'application/x-www-form-urlencoded', }, }, config, - { data } + { data: 'testData=data' } ); api.postGet(data, config); expect(api.getUrl).toHaveBeenLastCalledWith(expectedConfig); @@ -789,10 +790,11 @@ describe('AvApi', () => { url: testUrl, headers: { 'X-HTTP-Method-Override': 'GET', + 'Content-Type': 'application/x-www-form-urlencoded', }, }, config, - { data } + { data: 'testData=data' } ); api.beforePostGet = jest.fn(thisData => thisData); api.postGet(data, config);