6
6
* Author: Erik Wittern
7
7
* License: MIT
8
8
*/
9
- 'use strict'
9
+ 'use strict' ;
10
10
11
- const OpenAPIToHar = require ( './openapi-to-har.js' )
12
- const HTTPSnippet = require ( 'httpsnippet' )
11
+ const OpenAPIToHar = require ( './openapi-to-har.js' ) ;
12
+ const HTTPSnippet = require ( 'httpsnippet' ) ;
13
13
14
14
/**
15
15
* Return snippets for endpoint identified using path and method in the given
@@ -18,89 +18,95 @@ const HTTPSnippet = require('httpsnippet')
18
18
* @param {object } openApi OpenAPI document
19
19
* @param {string } path Path identifying endpoint, e.g., '/users'
20
20
* @param {string } method HTTP method identifying endpoint, e.g., 'get'
21
- * @param {array } targets List of languages to create snippets in, e.g,
21
+ * @param {array } targets List of languages to create snippets in, e.g,
22
22
* ['cURL', 'Node']
23
23
* @param {object } values Optional: Values for the query parameters if present
24
24
*/
25
25
const getEndpointSnippets = function ( openApi , path , method , targets , values ) {
26
26
// if optional parameter is not provided, set it to empty object
27
27
if ( typeof values === 'undefined' ) {
28
- values = { }
28
+ values = { } ;
29
29
}
30
30
31
- const har = OpenAPIToHar . getEndpoint ( openApi , path , method , values )
31
+ const har = OpenAPIToHar . getEndpoint ( openApi , path , method , values ) ;
32
32
33
- const snippet = new HTTPSnippet ( har )
33
+ const snippet = new HTTPSnippet ( har ) ;
34
34
35
- const snippets = [ ]
35
+ const snippets = [ ] ;
36
36
for ( let j in targets ) {
37
- const target = formatTarget ( targets [ j ] )
38
- if ( ! target ) throw new Error ( 'Invalid target: ' + targets [ j ] )
37
+ const target = formatTarget ( targets [ j ] ) ;
38
+ if ( ! target ) throw new Error ( 'Invalid target: ' + targets [ j ] ) ;
39
39
snippets . push ( {
40
40
id : targets [ j ] ,
41
41
title : target . title ,
42
- content : snippet . convert ( target . language , typeof target . library !== 'undefined' ? target . library : null )
43
- } )
42
+ content : snippet . convert (
43
+ target . language ,
44
+ typeof target . library !== 'undefined' ? target . library : null
45
+ ) ,
46
+ } ) ;
44
47
}
45
48
46
49
return {
47
50
method : har . method ,
48
51
url : har . url ,
49
52
description : har . description ,
50
53
resource : getResourceName ( har . url ) ,
51
- snippets : snippets
52
- }
53
- }
54
+ snippets : snippets ,
55
+ } ;
56
+ } ;
54
57
55
58
/**
56
59
* Return snippets for all endpoints in the given OpenAPI document.
57
- *
60
+ *
58
61
* @param {object } openApi OpenAPI document
59
- * @param {array } targets List of languages to create snippets in, e.g,
62
+ * @param {array } targets List of languages to create snippets in, e.g,
60
63
* ['cURL', 'Node']
61
64
*/
62
65
const getSnippets = function ( openApi , targets ) {
63
- const harList = OpenAPIToHar . getAll ( openApi )
66
+ const harList = OpenAPIToHar . getAll ( openApi ) ;
64
67
65
- const results = [ ]
68
+ const results = [ ] ;
66
69
for ( let i in harList ) {
67
70
// create HTTPSnippet object:
68
- const har = harList [ i ]
69
- const snippet = new HTTPSnippet ( har . har )
71
+ const har = harList [ i ] ;
72
+ const snippet = new HTTPSnippet ( har . har ) ;
70
73
71
- const snippets = [ ]
74
+ const snippets = [ ] ;
72
75
for ( let j in targets ) {
73
- const target = formatTarget ( targets [ j ] )
74
- if ( ! target ) throw new Error ( 'Invalid target: ' + targets [ j ] )
76
+ const target = formatTarget ( targets [ j ] ) ;
77
+ if ( ! target ) throw new Error ( 'Invalid target: ' + targets [ j ] ) ;
75
78
snippets . push ( {
76
79
id : targets [ j ] ,
77
80
title : target . title ,
78
- content : snippet . convert ( target . language , typeof target . library !== 'undefined' ? target . library : null )
79
- } )
81
+ content : snippet . convert (
82
+ target . language ,
83
+ typeof target . library !== 'undefined' ? target . library : null
84
+ ) ,
85
+ } ) ;
80
86
}
81
87
82
88
results . push ( {
83
89
method : har . method ,
84
90
url : har . url ,
85
91
description : har . description ,
86
92
resource : getResourceName ( har . url ) ,
87
- snippets
88
- } )
93
+ snippets,
94
+ } ) ;
89
95
}
90
96
91
97
// sort results:
92
98
results . sort ( ( a , b ) => {
93
99
if ( a . resource < b . resource ) {
94
- return - 1
100
+ return - 1 ;
95
101
} else if ( a . resource > b . resource ) {
96
- return 1
102
+ return 1 ;
97
103
} else {
98
- return getMethodOrder ( a . method . toLowerCase ( ) , b . method . toLowerCase ( ) )
104
+ return getMethodOrder ( a . method . toLowerCase ( ) , b . method . toLowerCase ( ) ) ;
99
105
}
100
- } )
106
+ } ) ;
101
107
102
- return results
103
- }
108
+ return results ;
109
+ } ;
104
110
105
111
/**
106
112
* Determine the order of HTTP methods.
@@ -110,19 +116,19 @@ const getSnippets = function (openApi, targets) {
110
116
* @return {number } The order instruction for the given HTTP verbs
111
117
*/
112
118
const getMethodOrder = function ( a , b ) {
113
- const order = [ 'get' , 'post' , 'put' , 'delete' , 'patch' ]
119
+ const order = [ 'get' , 'post' , 'put' , 'delete' , 'patch' ] ;
114
120
if ( order . indexOf ( a ) === - 1 ) {
115
- return 1
121
+ return 1 ;
116
122
} else if ( order . indexOf ( b ) === - 1 ) {
117
- return - 1
123
+ return - 1 ;
118
124
} else if ( order . indexOf ( a ) < order . indexOf ( b ) ) {
119
- return - 1
125
+ return - 1 ;
120
126
} else if ( order . indexOf ( a ) > order . indexOf ( b ) ) {
121
- return 1
127
+ return 1 ;
122
128
} else {
123
- return 0
129
+ return 0 ;
124
130
}
125
- }
131
+ } ;
126
132
127
133
/**
128
134
* Determines the name of the resource exposed by the method.
@@ -132,14 +138,14 @@ const getMethodOrder = function (a, b) {
132
138
* @return {string } The determined resource name
133
139
*/
134
140
const getResourceName = function ( urlStr ) {
135
- const pathComponents = urlStr . split ( '/' )
141
+ const pathComponents = urlStr . split ( '/' ) ;
136
142
for ( let i = pathComponents . length - 1 ; i >= 0 ; i -- ) {
137
- const cand = pathComponents [ i ]
143
+ const cand = pathComponents [ i ] ;
138
144
if ( cand !== '' && ! / ^ { / . test ( cand ) ) {
139
- return cand
145
+ return cand ;
140
146
}
141
147
}
142
- }
148
+ } ;
143
149
144
150
/**
145
151
* Format the given target by splitting up language and library and making sure
@@ -149,64 +155,67 @@ const getResourceName = function (urlStr) {
149
155
* @return {object } Object with formatted target, or null
150
156
*/
151
157
const formatTarget = function ( targetStr ) {
152
- const language = targetStr . split ( '_' ) [ 0 ]
153
- const title = capitalizeFirstLetter ( language )
154
- let library = targetStr . split ( '_' ) [ 1 ]
158
+ const language = targetStr . split ( '_' ) [ 0 ] ;
159
+ const title = capitalizeFirstLetter ( language ) ;
160
+ let library = targetStr . split ( '_' ) [ 1 ] ;
155
161
156
- const validTargets = HTTPSnippet . availableTargets ( )
157
- let validLanguage = false
158
- let validLibrary = false
162
+ const validTargets = HTTPSnippet . availableTargets ( ) ;
163
+ let validLanguage = false ;
164
+ let validLibrary = false ;
159
165
for ( let i in validTargets ) {
160
- const target = validTargets [ i ]
166
+ const target = validTargets [ i ] ;
161
167
if ( language === target . key ) {
162
- validLanguage = true
168
+ validLanguage = true ;
163
169
if ( typeof library === 'undefined' ) {
164
- library = target . default
165
- validLibrary = true
170
+ library = target . default ;
171
+ validLibrary = true ;
166
172
} else {
167
173
for ( let j in target . clients ) {
168
- const client = target . clients [ j ]
174
+ const client = target . clients [ j ] ;
169
175
if ( library === client . key ) {
170
- validLibrary = true
171
- break
176
+ validLibrary = true ;
177
+ break ;
172
178
}
173
179
}
174
180
}
175
181
}
176
182
}
177
183
178
184
if ( ! validLanguage || ! validLibrary ) {
179
- return null
185
+ return null ;
180
186
}
181
187
182
188
return {
183
- title : typeof library !== 'undefined' ? title + ' + ' + capitalizeFirstLetter ( library ) : title ,
189
+ title :
190
+ typeof library !== 'undefined'
191
+ ? title + ' + ' + capitalizeFirstLetter ( library )
192
+ : title ,
184
193
language,
185
- library
186
- }
187
- }
194
+ library,
195
+ } ;
196
+ } ;
188
197
189
198
const capitalizeFirstLetter = function ( string ) {
190
- return string . charAt ( 0 ) . toUpperCase ( ) + string . slice ( 1 )
191
- }
199
+ return string . charAt ( 0 ) . toUpperCase ( ) + string . slice ( 1 ) ;
200
+ } ;
192
201
193
202
module . exports = {
194
203
getSnippets,
195
- getEndpointSnippets
196
- }
204
+ getEndpointSnippets,
205
+ } ;
197
206
198
207
// The if is only for when this is run from the browser
199
208
if ( typeof window !== 'undefined' ) {
200
209
// grab existing namespace object, or create a blank object
201
210
// if it doesn't exist
202
- let OpenAPISnippets = window . OpenAPISnippets || { }
211
+ let OpenAPISnippets = window . OpenAPISnippets || { } ;
203
212
204
213
// define that object
205
214
OpenAPISnippets = {
206
215
getSnippets,
207
- getEndpointSnippets
208
- }
216
+ getEndpointSnippets,
217
+ } ;
209
218
210
219
// replace/create the global namespace
211
- window . OpenAPISnippets = OpenAPISnippets
220
+ window . OpenAPISnippets = OpenAPISnippets ;
212
221
}
0 commit comments