@@ -28,8 +28,12 @@ const parseOpenAPISpec = (collection) => {
2828 try {
2929 // servers is array,, figure case where there can be multiple servers
3030 const baseUrl = collection [ 'servers' ] [ 0 ] [ 'url' ] ;
31- Object . entries ( collection [ 'paths' ] ) . map ( ( [ path , operation ] , _ ) => {
32- Object . entries ( operation ) . map ( ( [ requestType , request ] , _ ) => {
31+ Object . entries ( collection [ 'paths' ] ) . map ( ( [ path , operations ] , _ ) => {
32+ const commonParameters = Object . prototype . hasOwnProperty . call ( operations , 'parameters' )
33+ ? operations [ 'parameters' ]
34+ : [ ] ;
35+ const { parameters, ...operationsFiltered } = operations ;
36+ Object . entries ( operationsFiltered ) . map ( ( [ requestType , request ] , _ ) => {
3337 const summary = request [ 'summary' ] ;
3438 const operationId = request [ 'operationId' ] ;
3539 const tags = request [ 'tags' ] ;
@@ -39,9 +43,29 @@ const parseOpenAPISpec = (collection) => {
3943 const pathParameters = [ ] ;
4044 const queryParameters = [ ] ;
4145
46+ const requestParameters = commonParameters . map ( ( obj ) => {
47+ if ( request [ 'parameters' ] ) {
48+ // Find the object in the second array that has the same id as the current object
49+ const objFromArr2 = request [ 'parameters' ] . find ( ( o ) => o . name === obj . name && o . in === obj . in ) ;
50+ // If found, merge the two objects, otherwise return the original object
51+ return objFromArr2 ? { ...obj , ...objFromArr2 } : obj ;
52+ } else {
53+ return obj ;
54+ }
55+ } ) ;
56+
4257 if ( request [ 'parameters' ] ) {
58+ // Add any objects from the second array that do not exist in the first array
59+ request [ 'parameters' ] . forEach ( ( obj ) => {
60+ if ( ! commonParameters . some ( ( o ) => o . name === obj . name && o . in === obj . in ) ) {
61+ requestParameters . push ( obj ) ;
62+ }
63+ } ) ;
64+ }
65+
66+ if ( requestParameters . length > 0 ) {
4367 let firstQueryParam = true ;
44- request [ 'parameters' ] . map ( ( value , _ ) => {
68+ requestParameters . map ( ( value , _ ) => {
4569 if ( value [ 'in' ] === 'query' ) {
4670 if ( firstQueryParam ) {
4771 url = url . concat ( `?${ value [ 'name' ] } ={{${ value [ 'name' ] } }}` ) ;
0 commit comments