@@ -1111,13 +1111,27 @@ let QUERYPARAM = 'query',
1111
1111
}
1112
1112
1113
1113
requestExample = _ . find ( requestBodyExamples , ( example , index ) => {
1114
- if ( example . key === responseExample . key ) {
1114
+ if (
1115
+ example . contentType === responseExample . contentType &&
1116
+ _ . toLower ( example . key ) === _ . toLower ( responseExample . key )
1117
+ ) {
1115
1118
requestBodyExamples [ index ] . isUsed = true ;
1116
1119
return true ;
1117
1120
}
1118
1121
return false ;
1119
1122
} ) ;
1120
1123
1124
+ // If exact content type is not matching, pick first content type with same example key
1125
+ if ( ! requestExample ) {
1126
+ requestExample = _ . find ( requestBodyExamples , ( example , index ) => {
1127
+ if ( _ . toLower ( example . key ) === _ . toLower ( responseExample . key ) ) {
1128
+ requestBodyExamples [ index ] . isUsed = true ;
1129
+ return true ;
1130
+ }
1131
+ return false ;
1132
+ } ) ;
1133
+ }
1134
+
1121
1135
if ( ! requestExample ) {
1122
1136
if ( requestBodyExamples [ index ] && ! requestBodyExamples [ index ] . isUsed ) {
1123
1137
requestExample = requestBodyExamples [ index ] ;
@@ -1141,8 +1155,8 @@ let QUERYPARAM = 'query',
1141
1155
pmExamples . push ( {
1142
1156
request : getExampleData ( context , { [ requestExample . key ] : requestExample . value } ) ,
1143
1157
response : responseExampleData ,
1144
- name : _ . get ( responseExample , 'value.summary' ) || _ . get ( requestExample , 'value.summary' ) ||
1145
- ( responseExample . key === '_default' ? requestExample . key : responseExample . key )
1158
+ name : _ . get ( responseExample , 'value.summary' ) || ( responseExample . key !== '_default' && responseExample . key ) ||
1159
+ _ . get ( requestExample , 'value.summary' ) || requestExample . key || 'Example'
1146
1160
} ) ;
1147
1161
} ) ;
1148
1162
@@ -1166,8 +1180,9 @@ let QUERYPARAM = 'query',
1166
1180
pmExamples . push ( {
1167
1181
request : getExampleData ( context , { [ requestBodyExamples [ i ] . key ] : requestBodyExamples [ i ] . value } ) ,
1168
1182
response : responseExampleData ,
1169
- name : _ . get ( requestBodyExamples [ i ] , 'value.summary' ) || _ . get ( responseExample , 'value.summary' ) ||
1170
- requestBodyExamples [ i ] . key
1183
+ name : _ . get ( requestBodyExamples [ i ] , 'value.summary' ) ||
1184
+ ( requestBodyExamples [ i ] . key !== '_default' && requestBodyExamples [ i ] . key ) ||
1185
+ _ . get ( responseExample , 'value.summary' ) || 'Example'
1171
1186
} ) ;
1172
1187
}
1173
1188
}
@@ -1257,14 +1272,7 @@ let QUERYPARAM = 'query',
1257
1272
example = requestBodySchema . example ;
1258
1273
}
1259
1274
1260
- if (
1261
- isExampleBody &&
1262
- shouldGenerateFromExample &&
1263
- ( ! _ . isEmpty ( examples ) )
1264
- ) {
1265
- responseExamples = examples ;
1266
- }
1267
- else if ( shouldGenerateFromExample && ( example !== undefined || examples ) ) {
1275
+ if ( shouldGenerateFromExample && ( example !== undefined || examples ) ) {
1268
1276
/**
1269
1277
* Here it could be example or examples (plural)
1270
1278
* For examples, we'll pick the first example
@@ -1325,18 +1333,26 @@ let QUERYPARAM = 'query',
1325
1333
}
1326
1334
}
1327
1335
1336
+ // Generate multiple examples when either request or response contains more than one example
1328
1337
if (
1329
1338
isExampleBody &&
1330
1339
shouldGenerateFromExample &&
1331
- ( ! _ . isEmpty ( examples ) || ! _ . isEmpty ( requestBodyExamples ) )
1340
+ ( _ . size ( examples ) > 1 || _ . size ( requestBodyExamples ) > 1 )
1332
1341
) {
1333
1342
responseExamples = [ {
1334
1343
key : '_default' ,
1335
- value : bodyData
1344
+ value : bodyData ,
1345
+ contentType : bodyType
1336
1346
} ] ;
1337
1347
1338
1348
if ( ! _ . isEmpty ( examples ) ) {
1339
- responseExamples = _ . map ( examples , ( example , key ) => { return { key, value : example } ; } ) ;
1349
+ responseExamples = _ . map ( examples , ( example , key ) => {
1350
+ return {
1351
+ key,
1352
+ value : example ,
1353
+ contentType : bodyType
1354
+ } ;
1355
+ } ) ;
1340
1356
}
1341
1357
return generateExamples ( context , responseExamples , requestBodyExamples , requestBodySchema , isBodyTypeXML ) ;
1342
1358
}
@@ -1495,16 +1511,6 @@ let QUERYPARAM = 'query',
1495
1511
}
1496
1512
} ) ;
1497
1513
1498
- // prefer XML type of body if no JSON body is available
1499
- if ( ! bodyType ) {
1500
- _ . forOwn ( content , ( value , key ) => {
1501
- if ( content . hasOwnProperty ( key ) && getHeaderFamily ( key ) === HEADER_TYPE . XML ) {
1502
- bodyType = key ;
1503
- return false ;
1504
- }
1505
- } ) ;
1506
- }
1507
-
1508
1514
// use first available type of body if no JSON or XML body is available
1509
1515
if ( ! bodyType ) {
1510
1516
// take the first property it has
@@ -1838,7 +1844,6 @@ let QUERYPARAM = 'query',
1838
1844
exampleName = bodyData . name ;
1839
1845
1840
1846
if ( ( bodyType === TEXT_XML || bodyType === APP_XML || headerFamily === HEADER_TYPE . XML ) ) {
1841
- requestBodyData && ( requestBodyData = getXmlVersionContent ( requestBodyData ) ) ;
1842
1847
responseBodyData && ( responseBodyData = getXmlVersionContent ( responseBodyData ) ) ;
1843
1848
}
1844
1849
@@ -2023,7 +2028,9 @@ let QUERYPARAM = 'query',
2023
2028
const exampleData = getExampleData ( context , { [ name ] : exampleObj } ) ;
2024
2029
2025
2030
if ( isBodyTypeXML ) {
2026
- exampleObj . value = getXMLExampleData ( context , exampleData , resolveSchema ( context , content . schema ) ) ;
2031
+ let bodyData = getXMLExampleData ( context , exampleData , resolveSchema ( context , content . schema ) ) ;
2032
+
2033
+ exampleObj . value = getXmlVersionContent ( bodyData ) ;
2027
2034
}
2028
2035
}
2029
2036
0 commit comments