Infer response content-type from response header

This commit is contained in:
abhijitkane
2018-11-30 11:14:25 +05:30
parent d693da2ee4
commit 57e0e73015

View File

@@ -512,25 +512,36 @@ module.exports = {
* @return {string} responseBody
*/
convertToPmResponseBody: function(contentObj) {
var responseBody;
var responseBody, cTypeHeader;
if (!contentObj) {
return '';
return {
contentTypeHeader: null,
responseBody: ''
};
}
if (contentObj[APP_JSON]) {
cTypeHeader = APP_JSON;
responseBody = this.convertToPmBodyData(contentObj[APP_JSON]);
}
else if (contentObj[APP_XML]) {
cTypeHeader = APP_XML;
responseBody = this.convertToPmBodyData(contentObj[APP_XML]);
}
else if (contentObj[APP_JS]) {
cTypeHeader = APP_JS;
responseBody = this.convertToPmBodyData(contentObj[APP_JS]);
}
else if (contentObj[TEXT_PLAIN]) {
cTypeHeader = TEXT_PLAIN;
responseBody = this.convertToPmBodyData(contentObj[TEXT_PLAIN]);
}
// TODO: Need to figure out the else case
return JSON.stringify(responseBody, null, 4);
return {
contentTypeHeader: cTypeHeader,
responseBody: JSON.stringify(responseBody, null, 4)
};
},
/**
@@ -957,6 +968,7 @@ module.exports = {
*/
convertToPmResponse: function(response, code) {
var responseHeaders = [],
responseBodyWrapper,
header;
_.forOwn(response.headers, (value, key) => {
if (key !== 'Content-Type') {
@@ -971,8 +983,24 @@ module.exports = {
responseHeaders.push(this.convertToPmHeader(header));
}
});
if (response.content && Object.keys(response.content).length > 0) {
responseBodyWrapper = this.convertToPmResponseBody(response.content);
if (responseBodyWrapper.contentTypeHeader) {
// we could infer the content-type header from the body
responseHeaders.push({ key: 'Content-Type', value: responseBodyWrapper.contentTypeHeader });
if (responseBodyWrapper.contentTypeHeader === APP_JSON) {
previewLanguage = 'json';
}
}
else if (response.content && Object.keys(response.content).length > 0) {
responseHeaders.push({ key: 'Content-Type', value: Object.keys(response.content)[0] });
if (Object.keys(response.content)[0] === APP_JSON) {
previewLanguage = 'json';
}
else if (Object.keys(response.content)[0] === APP_XML) {
previewLanguage = 'xml';
}
}
else {
responseHeaders.push({ key: 'Content-Type', value: TEXT_PLAIN });
@@ -983,7 +1011,9 @@ module.exports = {
name: response.description,
code: code === 'default' ? 500 : Number(code),
header: responseHeaders,
body: this.convertToPmResponseBody(response.content)
body: responseBodyWrapper.responseBody,
originalRequest: originalRequest,
_postman_previewlanguage: previewLanguage
});
},