1+ const { generateRequestBodyExample } = require ( './generate-request-body' ) ;
2+ const {
3+ generateQueryParamsExample,
4+ generateParameterExample,
5+ generatePathParamsExample,
6+ } = require ( './generate-request-parameters' ) ;
7+
18const computeUrl = ( baseUrl , path ) => {
29 if ( baseUrl . charAt ( baseUrl . length - 1 ) === '/' && path . charAt ( 0 ) === '/' ) {
310 return baseUrl + path . substring ( 1 , path . length ) ;
@@ -28,30 +35,68 @@ const parseOpenAPISpec = (collection) => {
2835 const tags = request [ 'tags' ] ;
2936 var url = replaceSingleToDoubleCurlyBraces ( computeUrl ( baseUrl , path ) ) ;
3037 var variables = { } ;
38+ var requestBody = { } ;
39+ const pathParameters = [ ] ;
40+ const queryParameters = [ ] ;
3141
32- // console.log(operationId)
33- // Get is easy, others are hard
34- if ( requestType . toUpperCase ( ) === 'GET' && request [ 'parameters' ] ) {
42+ if ( request [ 'parameters' ] ) {
3543 let firstQueryParam = true ;
3644 request [ 'parameters' ] . map ( ( value , _ ) => {
37- // path parameters are included in url
38- // handle multiple parameters
39- // allow different type of variables in request node like string, int, array etc...
4045 if ( value [ 'in' ] === 'query' ) {
4146 if ( firstQueryParam ) {
4247 url = url . concat ( `?${ value [ 'name' ] } ={{${ value [ 'name' ] } }}` ) ;
4348 firstQueryParam = false ;
4449 } else {
4550 url = url . concat ( `&${ value [ 'name' ] } ={{${ value [ 'name' ] } }}` ) ;
4651 }
52+ queryParameters . push ( value ) ;
53+ }
54+
55+ if ( value [ 'in' ] === 'path' ) {
56+ pathParameters . push ( value ) ;
4757 }
4858 } ) ;
4959 }
5060
61+ if ( queryParameters . length > 0 ) {
62+ const res = generateQueryParamsExample ( queryParameters ) ;
63+ Array . from ( res . entries ( ) ) . map ( ( [ key , value ] , index ) => {
64+ variables [ key ] = {
65+ type : typeof value ,
66+ value,
67+ } ;
68+ } ) ;
69+ }
70+
71+ if ( pathParameters . length > 0 ) {
72+ const res = generatePathParamsExample ( pathParameters ) ;
73+ Array . from ( res . entries ( ) ) . map ( ( [ key , value ] , index ) => {
74+ variables [ key ] = {
75+ type : typeof value ,
76+ value,
77+ } ;
78+ } ) ;
79+ }
80+
5181 if ( request [ 'requestBody' ] ) {
52- if ( request [ 'requestBody' ] [ 'application/json' ] ) {
53- // console.log('requestBody: ', request["requestBody"]["content"]["schema"])
54- // generate an example to be used in request body
82+ if ( request [ 'requestBody' ] [ 'content' ] [ 'application/json' ] ) {
83+ requestBody = {
84+ type : 'raw-json' ,
85+ body : JSON . stringify (
86+ generateRequestBodyExample ( request [ 'requestBody' ] [ 'content' ] [ 'application/json' ] [ 'schema' ] ) ,
87+ ) ,
88+ } ;
89+ }
90+
91+ if ( request [ 'requestBody' ] [ 'content' ] [ 'multipart/form-data' ] ) {
92+ requestBody = {
93+ type : 'form-data' ,
94+ body : {
95+ key : '' ,
96+ value : '' ,
97+ name : '' ,
98+ } ,
99+ } ;
55100 }
56101 }
57102
@@ -61,8 +106,10 @@ const parseOpenAPISpec = (collection) => {
61106 operationId : operationId ,
62107 requestType : requestType . toUpperCase ( ) ,
63108 tags : tags ,
109+ requestBody,
110+ preReqVars : variables ,
64111 } ;
65- // console.log(finalNode);
112+
66113 parsedNodes . push ( finalNode ) ;
67114 } ) ;
68115 } ) ;
@@ -72,4 +119,6 @@ const parseOpenAPISpec = (collection) => {
72119 return parsedNodes ;
73120} ;
74121
75- module . exports = parseOpenAPISpec ;
122+ module . exports = {
123+ parseOpenAPISpec,
124+ } ;
0 commit comments