@@ -101,7 +101,8 @@ const { formatDataPath, checkIsCorrectType, isKnownType } = require('./common/sc
101
101
{ compareVersion } = require ( './common/versionUtils.js' ) ,
102
102
parse = require ( './parse' ) ,
103
103
{ getBundleContentAndComponents, parseFileOrThrow } = require ( './bundle.js' ) ,
104
- MULTI_FILE_API_TYPE_ALLOWED_VALUE = 'multiFile' ;
104
+ MULTI_FILE_API_TYPE_ALLOWED_VALUE = 'multiFile' ,
105
+ MEDIA_TYPE_ALL_RANGES = '*/*' ;
105
106
/* eslint-enable */
106
107
107
108
// See https://github.com/json-schema-faker/json-schema-faker/tree/master/docs#available-options
@@ -1377,7 +1378,8 @@ module.exports = {
1377
1378
convertToPmResponseBody : function ( contentObj , components , options , schemaCache ) {
1378
1379
options = _ . merge ( { } , defaultOptions , options ) ;
1379
1380
1380
- var responseBody , cTypeHeader , hasComputedType , cTypes ;
1381
+ var responseBody , cTypeHeader , hasComputedType , cTypes ,
1382
+ isJsonLike = false ;
1381
1383
if ( ! contentObj ) {
1382
1384
return {
1383
1385
contentTypeHeader : null ,
@@ -1418,12 +1420,24 @@ module.exports = {
1418
1420
responseBody = JSON . stringify ( responseBody , null , options . indentCharacter ) ;
1419
1421
}
1420
1422
else if ( typeof responseBody !== 'string' ) {
1421
- // since the collection v2 schema only supports body being a string
1422
- responseBody = '' ;
1423
+ if ( cTypeHeader === MEDIA_TYPE_ALL_RANGES ) {
1424
+ if ( ! _ . isObject ( responseBody ) && _ . isFunction ( _ . get ( responseBody , 'toString' ) ) ) {
1425
+ responseBody = responseBody . toString ( ) ;
1426
+ }
1427
+ else {
1428
+ responseBody = JSON . stringify ( responseBody , null , options . indentCharacter ) ;
1429
+ isJsonLike = true ;
1430
+ }
1431
+ }
1432
+ else {
1433
+ responseBody = '' ;
1434
+ }
1423
1435
}
1436
+
1424
1437
return {
1425
1438
contentTypeHeader : cTypeHeader ,
1426
- responseBody : responseBody
1439
+ responseBody : responseBody ,
1440
+ isJsonLike
1427
1441
} ;
1428
1442
} ,
1429
1443
@@ -2157,7 +2171,34 @@ module.exports = {
2157
2171
} ) ;
2158
2172
2159
2173
responseBodyWrapper = this . convertToPmResponseBody ( response . content , components , options , schemaCache ) ;
2174
+ previewLanguage = this . resolveResponsePreviewLanguageAndResponseHeader ( responseBodyWrapper ,
2175
+ responseHeaders , response ) ;
2176
+ // replace 'X' char with '0'
2177
+ code = code . replace ( / X | x / g, '0' ) ;
2178
+ code = code === 'default' ? 500 : _ . toSafeInteger ( code ) ;
2179
+
2180
+ sdkResponse = new sdk . Response ( {
2181
+ name : response . description ,
2182
+ code : code || 500 ,
2183
+ header : responseHeaders ,
2184
+ body : responseBodyWrapper . responseBody ,
2185
+ originalRequest : originalRequest
2186
+ } ) ;
2187
+ sdkResponse . _postman_previewlanguage = previewLanguage ;
2188
+
2189
+ return sdkResponse ;
2190
+ } ,
2160
2191
2192
+ /**
2193
+ * Identifies the previewLanguage to use and also adds the identified content header to the responseHeaders array
2194
+ * @param {object } responseBodyWrapper generated response body and its related information
2195
+ * @param {object } responseHeaders - The existent array of response headers
2196
+ * @param {object } response in operationItem responses
2197
+ * @returns {string } previewLanguage
2198
+ */
2199
+ resolveResponsePreviewLanguageAndResponseHeader : function ( responseBodyWrapper ,
2200
+ responseHeaders , response ) {
2201
+ let previewLanguage = 'text' ;
2161
2202
if ( responseBodyWrapper . contentTypeHeader ) {
2162
2203
// we could infer the content-type header from the body
2163
2204
responseHeaders . push ( { key : 'Content-Type' , value : responseBodyWrapper . contentTypeHeader } ) ;
@@ -2167,6 +2208,9 @@ module.exports = {
2167
2208
else if ( this . getHeaderFamily ( responseBodyWrapper . contentTypeHeader ) === HEADER_TYPE . XML ) {
2168
2209
previewLanguage = PREVIEW_LANGUAGE . XML ;
2169
2210
}
2211
+ else if ( responseBodyWrapper . isJsonLike ) {
2212
+ previewLanguage = PREVIEW_LANGUAGE . JSON ;
2213
+ }
2170
2214
}
2171
2215
else if ( response . content && Object . keys ( response . content ) . length > 0 ) {
2172
2216
responseHeaders . push ( { key : 'Content-Type' , value : Object . keys ( response . content ) [ 0 ] } ) ;
@@ -2176,24 +2220,14 @@ module.exports = {
2176
2220
else if ( this . getHeaderFamily ( Object . keys ( response . content ) [ 0 ] ) === HEADER_TYPE . XML ) {
2177
2221
previewLanguage = PREVIEW_LANGUAGE . XML ;
2178
2222
}
2223
+ else if ( responseBodyWrapper . isJsonLike ) {
2224
+ previewLanguage = PREVIEW_LANGUAGE . JSON ;
2225
+ }
2179
2226
}
2180
2227
else {
2181
2228
responseHeaders . push ( { key : 'Content-Type' , value : TEXT_PLAIN } ) ;
2182
2229
}
2183
- // replace 'X' char with '0'
2184
- code = code . replace ( / X / g, '0' ) ;
2185
- code = code === 'default' ? 500 : _ . toSafeInteger ( code ) ;
2186
-
2187
- sdkResponse = new sdk . Response ( {
2188
- name : response . description ,
2189
- code : code || 500 ,
2190
- header : responseHeaders ,
2191
- body : responseBodyWrapper . responseBody ,
2192
- originalRequest : originalRequest
2193
- } ) ;
2194
- sdkResponse . _postman_previewlanguage = previewLanguage ;
2195
-
2196
- return sdkResponse ;
2230
+ return previewLanguage ;
2197
2231
} ,
2198
2232
2199
2233
/**
0 commit comments