swagger-client 2.1.21 → 2.1.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +81 -1
- package/browser/swagger-client.js +276 -191
- package/browser/swagger-client.min.js +8 -8
- package/lib/auth.js +1 -1
- package/lib/client.js +65 -14
- package/lib/helpers.js +23 -2
- package/lib/http.js +15 -28
- package/lib/resolver.js +101 -97
- package/lib/schema-markup.js +10 -17
- package/lib/spec-converter.js +3 -1
- package/lib/types/operation.js +45 -18
- package/package.json +2 -1
package/lib/http.js
CHANGED
|
@@ -38,6 +38,10 @@ SwaggerHttp.prototype.execute = function (obj, opts) {
|
|
|
38
38
|
}
|
|
39
39
|
client.opts = opts || {};
|
|
40
40
|
|
|
41
|
+
if (opts && opts.requestAgent) {
|
|
42
|
+
request = opts.requestAgent;
|
|
43
|
+
}
|
|
44
|
+
|
|
41
45
|
// legacy support
|
|
42
46
|
var hasJQuery = false;
|
|
43
47
|
if(typeof window !== 'undefined') {
|
|
@@ -207,6 +211,7 @@ JQueryHttpClient.prototype.execute = function (obj) {
|
|
|
207
211
|
};
|
|
208
212
|
|
|
209
213
|
SuperagentHttpClient.prototype.execute = function (obj) {
|
|
214
|
+
var connectionAgent = obj.connectionAgent;
|
|
210
215
|
var method = obj.method.toLowerCase();
|
|
211
216
|
var timeout = obj.timeout;
|
|
212
217
|
|
|
@@ -214,6 +219,11 @@ SuperagentHttpClient.prototype.execute = function (obj) {
|
|
|
214
219
|
method = 'del';
|
|
215
220
|
}
|
|
216
221
|
var headers = obj.headers || {};
|
|
222
|
+
|
|
223
|
+
if (connectionAgent) {
|
|
224
|
+
request = request.agent(connectionAgent);
|
|
225
|
+
}
|
|
226
|
+
|
|
217
227
|
var r = request[method](obj.url);
|
|
218
228
|
|
|
219
229
|
if (timeout) {
|
|
@@ -240,33 +250,7 @@ SuperagentHttpClient.prototype.execute = function (obj) {
|
|
|
240
250
|
if (contentType.indexOf('multipart/form-data') === 0) {
|
|
241
251
|
delete headers['Content-Type'];
|
|
242
252
|
if({}.toString.apply(obj.body) === '[object FormData]') {
|
|
243
|
-
|
|
244
|
-
var p = [];
|
|
245
|
-
while(true) {
|
|
246
|
-
var v = itr.next();
|
|
247
|
-
if(v.done) {
|
|
248
|
-
break;
|
|
249
|
-
}
|
|
250
|
-
var key = v.value;
|
|
251
|
-
// only once
|
|
252
|
-
if(p.indexOf(key) === -1) {
|
|
253
|
-
p.push(key);
|
|
254
|
-
var value = obj.body.getAll(key);
|
|
255
|
-
if({}.toString.apply(value) === '[object File]') {
|
|
256
|
-
r.attach(key, value);
|
|
257
|
-
}
|
|
258
|
-
else {
|
|
259
|
-
if (Array.isArray(value)) {
|
|
260
|
-
for (var t in value) {
|
|
261
|
-
r.field(key, value[t]);
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
else {
|
|
265
|
-
r.field(key, value);
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}
|
|
253
|
+
r.send(obj.body);
|
|
270
254
|
}
|
|
271
255
|
else {
|
|
272
256
|
var keyname, value, v;
|
|
@@ -284,6 +268,7 @@ SuperagentHttpClient.prototype.execute = function (obj) {
|
|
|
284
268
|
}
|
|
285
269
|
}
|
|
286
270
|
else if (_.isObject(obj.body)) {
|
|
271
|
+
// non multipart/form-data
|
|
287
272
|
obj.body = JSON.stringify(obj.body);
|
|
288
273
|
r.send(obj.body);
|
|
289
274
|
}
|
|
@@ -378,5 +363,7 @@ SuperagentHttpClient.prototype. binaryRequest = function (accept) {
|
|
|
378
363
|
if(!accept) {
|
|
379
364
|
return false;
|
|
380
365
|
}
|
|
381
|
-
return (/^image/i).test(accept)
|
|
366
|
+
return (/^image/i).test(accept)
|
|
367
|
+
|| (/^application\/pdf/).test(accept)
|
|
368
|
+
|| (/^application\/octet-stream/).test(accept);
|
|
382
369
|
};
|
package/lib/resolver.js
CHANGED
|
@@ -44,7 +44,7 @@ Resolver.prototype.resolve = function (spec, arg1, arg2, arg3) {
|
|
|
44
44
|
callback = arg1;
|
|
45
45
|
scope = arg2;
|
|
46
46
|
}
|
|
47
|
-
var _root = root;
|
|
47
|
+
var _root = root, modelName;
|
|
48
48
|
this.scope = (scope || this);
|
|
49
49
|
this.iteration = this.iteration || 0;
|
|
50
50
|
|
|
@@ -56,7 +56,7 @@ Resolver.prototype.resolve = function (spec, arg1, arg2, arg3) {
|
|
|
56
56
|
opts.responseInterceptor = this.scope.options.responseInterceptor;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
var name, path, property, propertyName;
|
|
59
|
+
var name, path, property, propertyName, parameter, done, counter;
|
|
60
60
|
var processedCalls = 0, resolvedRefs = {}, unresolvedRefs = {};
|
|
61
61
|
var resolutionTable = []; // store objects for dereferencing
|
|
62
62
|
|
|
@@ -64,7 +64,7 @@ Resolver.prototype.resolve = function (spec, arg1, arg2, arg3) {
|
|
|
64
64
|
// definitions
|
|
65
65
|
for (name in spec.definitions) {
|
|
66
66
|
var definition = spec.definitions[name];
|
|
67
|
-
if(definition
|
|
67
|
+
if(definition.$ref) {
|
|
68
68
|
this.resolveInline(root, spec, definition, resolutionTable, unresolvedRefs, definition);
|
|
69
69
|
}
|
|
70
70
|
else {
|
|
@@ -87,25 +87,25 @@ Resolver.prototype.resolve = function (spec, arg1, arg2, arg3) {
|
|
|
87
87
|
// shared parameters
|
|
88
88
|
spec.parameters = spec.parameters || {};
|
|
89
89
|
for(name in spec.parameters) {
|
|
90
|
-
|
|
90
|
+
parameter = spec.parameters[name];
|
|
91
91
|
if (parameter.in === 'body' && parameter.schema) {
|
|
92
92
|
if(_.isArray(parameter.schema.allOf)) {
|
|
93
93
|
// move to a definition
|
|
94
|
-
|
|
95
|
-
var
|
|
96
|
-
|
|
94
|
+
modelName = 'inline_model';
|
|
95
|
+
var _name = modelName;
|
|
96
|
+
done = false; counter = 0;
|
|
97
97
|
while(!done) {
|
|
98
|
-
if(typeof spec.definitions[
|
|
98
|
+
if(typeof spec.definitions[_name] === 'undefined') {
|
|
99
99
|
done = true;
|
|
100
100
|
break;
|
|
101
101
|
}
|
|
102
|
-
|
|
102
|
+
_name = modelName + '_' + counter;
|
|
103
103
|
counter ++;
|
|
104
104
|
}
|
|
105
|
-
spec.definitions[
|
|
105
|
+
spec.definitions[_name] = { allOf: parameter.schema.allOf };
|
|
106
106
|
delete parameter.schema.allOf;
|
|
107
|
-
parameter.schema.$ref = '#/definitions/' +
|
|
108
|
-
this.processAllOf(root,
|
|
107
|
+
parameter.schema.$ref = '#/definitions/' + _name;
|
|
108
|
+
this.processAllOf(root, _name, spec.definitions[_name], resolutionTable, unresolvedRefs, spec);
|
|
109
109
|
}
|
|
110
110
|
else {
|
|
111
111
|
this.resolveTo(root, parameter.schema, resolutionTable, location);
|
|
@@ -123,106 +123,110 @@ Resolver.prototype.resolve = function (spec, arg1, arg2, arg3) {
|
|
|
123
123
|
var method, operation, responseCode;
|
|
124
124
|
path = spec.paths[name];
|
|
125
125
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
else {
|
|
134
|
-
operation = path[method];
|
|
135
|
-
var sharedParameters = path.parameters || [];
|
|
136
|
-
var parameters = operation.parameters || [];
|
|
137
|
-
|
|
138
|
-
for (i in sharedParameters) {
|
|
139
|
-
var parameter = sharedParameters[i];
|
|
140
|
-
parameters.unshift(parameter);
|
|
141
|
-
}
|
|
142
|
-
if(method !== 'parameters' && _.isObject(operation)) {
|
|
143
|
-
operation.parameters = operation.parameters || parameters;
|
|
126
|
+
if(typeof path === 'object') {
|
|
127
|
+
for (method in path) {
|
|
128
|
+
// operation reference
|
|
129
|
+
if (method === '$ref') {
|
|
130
|
+
// location = path[method];
|
|
131
|
+
location = '/paths' + name;
|
|
132
|
+
this.resolveInline(root, spec, path, resolutionTable, unresolvedRefs, location);
|
|
144
133
|
}
|
|
134
|
+
else {
|
|
135
|
+
operation = path[method];
|
|
136
|
+
var sharedParameters = path.parameters || [];
|
|
137
|
+
var parameters = operation.parameters || [];
|
|
145
138
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
if (parameter.in === 'body' && parameter.schema) {
|
|
151
|
-
if(_.isArray(parameter.schema.allOf)) {
|
|
152
|
-
// move to a definition
|
|
153
|
-
var modelName = 'inline_model';
|
|
154
|
-
var name = modelName;
|
|
155
|
-
var done = false; var counter = 0;
|
|
156
|
-
while(!done) {
|
|
157
|
-
if(typeof spec.definitions[name] === 'undefined') {
|
|
158
|
-
done = true;
|
|
159
|
-
break;
|
|
160
|
-
}
|
|
161
|
-
name = modelName + '_' + counter;
|
|
162
|
-
counter ++;
|
|
163
|
-
}
|
|
164
|
-
spec.definitions[name] = { allOf: parameter.schema.allOf };
|
|
165
|
-
delete parameter.schema.allOf;
|
|
166
|
-
parameter.schema.$ref = '#/definitions/' + name;
|
|
167
|
-
this.processAllOf(root, name, spec.definitions[name], resolutionTable, unresolvedRefs, spec);
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
-
this.resolveTo(root, parameter.schema, resolutionTable, location);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
139
|
+
sharedParameters.forEach(function(parameter) {
|
|
140
|
+
parameters.unshift(parameter);
|
|
141
|
+
});
|
|
173
142
|
|
|
174
|
-
if (
|
|
175
|
-
|
|
176
|
-
this.resolveInline(root, spec, parameter, resolutionTable, unresolvedRefs, parameter.$ref);
|
|
143
|
+
if (method !== 'parameters' && _.isObject(operation)) {
|
|
144
|
+
operation.parameters = operation.parameters || parameters;
|
|
177
145
|
}
|
|
178
|
-
}
|
|
179
146
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
147
|
+
for (i in parameters) {
|
|
148
|
+
parameter = parameters[i];
|
|
149
|
+
location = '/paths' + name + '/' + method + '/parameters';
|
|
183
150
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
// response reference
|
|
187
|
-
this.resolveInline(root, spec, response, resolutionTable, unresolvedRefs, location);
|
|
188
|
-
}
|
|
189
|
-
if (response.schema) {
|
|
190
|
-
var responseObj = response;
|
|
191
|
-
if(_.isArray(responseObj.schema.allOf)) {
|
|
151
|
+
if (parameter.in === 'body' && parameter.schema) {
|
|
152
|
+
if (_.isArray(parameter.schema.allOf)) {
|
|
192
153
|
// move to a definition
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
154
|
+
modelName = 'inline_model';
|
|
155
|
+
name = modelName;
|
|
156
|
+
done = false;
|
|
157
|
+
counter = 0;
|
|
158
|
+
while (!done) {
|
|
159
|
+
if (typeof spec.definitions[name] === 'undefined') {
|
|
198
160
|
done = true;
|
|
199
161
|
break;
|
|
200
162
|
}
|
|
201
163
|
name = modelName + '_' + counter;
|
|
202
|
-
counter
|
|
164
|
+
counter++;
|
|
203
165
|
}
|
|
204
|
-
spec.definitions[name] = {
|
|
205
|
-
delete
|
|
206
|
-
|
|
207
|
-
responseObj.schema.$ref = '#/definitions/' + name;
|
|
166
|
+
spec.definitions[name] = {allOf: parameter.schema.allOf};
|
|
167
|
+
delete parameter.schema.allOf;
|
|
168
|
+
parameter.schema.$ref = '#/definitions/' + name;
|
|
208
169
|
this.processAllOf(root, name, spec.definitions[name], resolutionTable, unresolvedRefs, spec);
|
|
209
170
|
}
|
|
210
|
-
else if('array' === responseObj.schema.type) {
|
|
211
|
-
if(responseObj.schema.items && responseObj.schema.items.$ref) {
|
|
212
|
-
// response reference
|
|
213
|
-
this.resolveInline(root, spec, responseObj.schema.items, resolutionTable, unresolvedRefs, location);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
171
|
else {
|
|
217
|
-
this.resolveTo(root,
|
|
172
|
+
this.resolveTo(root, parameter.schema, resolutionTable, location);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if (parameter.$ref) {
|
|
177
|
+
// parameter reference
|
|
178
|
+
this.resolveInline(root, spec, parameter, resolutionTable, unresolvedRefs, parameter.$ref);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
for (responseCode in operation.responses) {
|
|
183
|
+
var response = operation.responses[responseCode];
|
|
184
|
+
location = '/paths' + name + '/' + method + '/responses/' + responseCode;
|
|
185
|
+
|
|
186
|
+
if (_.isObject(response)) {
|
|
187
|
+
if (response.$ref) {
|
|
188
|
+
// response reference
|
|
189
|
+
this.resolveInline(root, spec, response, resolutionTable, unresolvedRefs, location);
|
|
190
|
+
}
|
|
191
|
+
if (response.schema) {
|
|
192
|
+
var responseObj = response;
|
|
193
|
+
if (_.isArray(responseObj.schema.allOf)) {
|
|
194
|
+
// move to a definition
|
|
195
|
+
modelName = 'inline_model';
|
|
196
|
+
name = modelName;
|
|
197
|
+
done = false;
|
|
198
|
+
counter = 0;
|
|
199
|
+
while (!done) {
|
|
200
|
+
if (typeof spec.definitions[name] === 'undefined') {
|
|
201
|
+
done = true;
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
name = modelName + '_' + counter;
|
|
205
|
+
counter++;
|
|
206
|
+
}
|
|
207
|
+
spec.definitions[name] = {allOf: responseObj.schema.allOf};
|
|
208
|
+
delete responseObj.schema.allOf;
|
|
209
|
+
delete responseObj.schema.type;
|
|
210
|
+
responseObj.schema.$ref = '#/definitions/' + name;
|
|
211
|
+
this.processAllOf(root, name, spec.definitions[name], resolutionTable, unresolvedRefs, spec);
|
|
212
|
+
}
|
|
213
|
+
else if ('array' === responseObj.schema.type) {
|
|
214
|
+
if (responseObj.schema.items && responseObj.schema.items.$ref) {
|
|
215
|
+
// response reference
|
|
216
|
+
this.resolveInline(root, spec, responseObj.schema.items, resolutionTable, unresolvedRefs, location);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
this.resolveTo(root, response.schema, resolutionTable, location);
|
|
221
|
+
}
|
|
218
222
|
}
|
|
219
223
|
}
|
|
220
224
|
}
|
|
221
225
|
}
|
|
222
226
|
}
|
|
227
|
+
// clear them out to avoid multiple resolutions
|
|
228
|
+
path.parameters = [];
|
|
223
229
|
}
|
|
224
|
-
// clear them out to avoid multiple resolutions
|
|
225
|
-
path.parameters = [];
|
|
226
230
|
}
|
|
227
231
|
|
|
228
232
|
var expectedCalls = 0, toResolve = [];
|
|
@@ -385,7 +389,7 @@ Resolver.prototype.resolve = function (spec, arg1, arg2, arg3) {
|
|
|
385
389
|
else {
|
|
386
390
|
var cached = self.resolverCache[obj.url];
|
|
387
391
|
if (_.isObject(cached)) {
|
|
388
|
-
obj.on.response({obj: cached})
|
|
392
|
+
obj.on.response({obj: cached});
|
|
389
393
|
}
|
|
390
394
|
else {
|
|
391
395
|
lock[obj.url] = true;
|
|
@@ -463,7 +467,7 @@ Resolver.prototype.resolveItem = function(spec, root, resolutionTable, resolvedR
|
|
|
463
467
|
|
|
464
468
|
Resolver.prototype.finish = function (spec, root, resolutionTable, resolvedRefs, unresolvedRefs, callback, localResolve) {
|
|
465
469
|
// walk resolution table and replace with resolved refs
|
|
466
|
-
var ref;
|
|
470
|
+
var ref, abs;
|
|
467
471
|
for (ref in resolutionTable) {
|
|
468
472
|
var item = resolutionTable[ref];
|
|
469
473
|
|
|
@@ -475,7 +479,7 @@ Resolver.prototype.finish = function (spec, root, resolutionTable, resolvedRefs,
|
|
|
475
479
|
if (localResolve !== true) {
|
|
476
480
|
// don't retain root for local definitions
|
|
477
481
|
for (key in resolvedTo.obj) {
|
|
478
|
-
|
|
482
|
+
abs = this.retainRoot(key, resolvedTo.obj[key], item.root);
|
|
479
483
|
resolvedTo.obj[key] = abs;
|
|
480
484
|
}
|
|
481
485
|
}
|
|
@@ -487,7 +491,7 @@ Resolver.prototype.finish = function (spec, root, resolutionTable, resolvedRefs,
|
|
|
487
491
|
delete targetObj.$ref;
|
|
488
492
|
|
|
489
493
|
for (key in resolvedTo.obj) {
|
|
490
|
-
|
|
494
|
+
abs = resolvedTo.obj[key];
|
|
491
495
|
|
|
492
496
|
if (localResolve !== true) {
|
|
493
497
|
// don't retain root for local definitions
|
|
@@ -666,7 +670,7 @@ Resolver.prototype.resolveInline = function (root, spec, property, resolutionTab
|
|
|
666
670
|
var key = property.$ref, ref = property.$ref, i, p, p2, rs;
|
|
667
671
|
var rootTrimmed = false;
|
|
668
672
|
|
|
669
|
-
root = root || '' // Guard against .split. @fehguy, you'll need to check if this logic fits
|
|
673
|
+
root = root || ''; // Guard against .split. @fehguy, you'll need to check if this logic fits
|
|
670
674
|
// More imporantly is how do we gracefully handle relative urls, when provided just a 'spec', not a 'url' ?
|
|
671
675
|
|
|
672
676
|
if (ref) {
|
|
@@ -806,7 +810,7 @@ Resolver.prototype.resolveTo = function (root, property, resolutionTable, locati
|
|
|
806
810
|
}
|
|
807
811
|
delete property.title;
|
|
808
812
|
this.spec.definitions[name] = _.cloneDeep(property);
|
|
809
|
-
property
|
|
813
|
+
property.$ref = '#/definitions/' + name;
|
|
810
814
|
delete property.type;
|
|
811
815
|
delete property.properties;
|
|
812
816
|
}
|
package/lib/schema-markup.js
CHANGED
|
@@ -15,17 +15,11 @@ var _ = {
|
|
|
15
15
|
forEach: require('lodash-compat/collection/forEach')
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
-
module.exports.optionHtml =
|
|
19
|
-
module.exports.typeFromJsonSchema = typeFromJsonSchema;
|
|
20
|
-
module.exports.getStringSignature = getStringSignature;
|
|
21
|
-
module.exports.schemaToHTML = schemaToHTML;
|
|
22
|
-
module.exports.schemaToJSON = schemaToJSON;
|
|
23
|
-
|
|
24
|
-
function optionHtml(label, value) {
|
|
18
|
+
var optionHtml = module.exports.optionHtml = function (label, value) {
|
|
25
19
|
return '<tr><td class="optionName">' + label + ':</td><td>' + value + '</td></tr>';
|
|
26
|
-
}
|
|
20
|
+
};
|
|
27
21
|
|
|
28
|
-
function
|
|
22
|
+
module.exports.typeFromJsonSchema = function (type, format) {
|
|
29
23
|
var str;
|
|
30
24
|
|
|
31
25
|
if (type === 'integer' && format === 'int32') {
|
|
@@ -51,9 +45,9 @@ function typeFromJsonSchema(type, format) {
|
|
|
51
45
|
}
|
|
52
46
|
|
|
53
47
|
return str;
|
|
54
|
-
}
|
|
48
|
+
};
|
|
55
49
|
|
|
56
|
-
function
|
|
50
|
+
var getStringSignature = module.exports.getStringSignature = function (obj, baseComponent) {
|
|
57
51
|
var str = '';
|
|
58
52
|
|
|
59
53
|
if (typeof obj.$ref !== 'undefined') {
|
|
@@ -95,9 +89,9 @@ function getStringSignature(obj, baseComponent) {
|
|
|
95
89
|
}
|
|
96
90
|
|
|
97
91
|
return str;
|
|
98
|
-
}
|
|
92
|
+
};
|
|
99
93
|
|
|
100
|
-
function
|
|
94
|
+
var schemaToJSON = module.exports.schemaToJSON = function (schema, models, modelsToIgnore, modelPropertyMacro) {
|
|
101
95
|
// Resolve the schema (Handle nested schemas)
|
|
102
96
|
schema = Helpers.resolveSchema(schema);
|
|
103
97
|
|
|
@@ -182,10 +176,9 @@ function schemaToJSON(schema, models, modelsToIgnore, modelPropertyMacro) {
|
|
|
182
176
|
}
|
|
183
177
|
|
|
184
178
|
return output;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
function schemaToHTML(name, schema, models, modelPropertyMacro) {
|
|
179
|
+
};
|
|
188
180
|
|
|
181
|
+
module.exports.schemaToHTML =function (name, schema, models, modelPropertyMacro) {
|
|
189
182
|
var strongOpen = '<span class="strong">';
|
|
190
183
|
var strongClose = '</span>';
|
|
191
184
|
|
|
@@ -530,4 +523,4 @@ function schemaToHTML(name, schema, models, modelPropertyMacro) {
|
|
|
530
523
|
|
|
531
524
|
return html + strongOpen + (isArray ? ']' : '}') + strongClose;
|
|
532
525
|
}
|
|
533
|
-
}
|
|
526
|
+
};
|
package/lib/spec-converter.js
CHANGED
|
@@ -557,7 +557,9 @@ SwaggerSpecConverter.prototype.securityDefinitions = function(obj, swagger) {
|
|
|
557
557
|
var name;
|
|
558
558
|
for(name in obj.authorizations) {
|
|
559
559
|
var isValid = false;
|
|
560
|
-
var securityDefinition = {
|
|
560
|
+
var securityDefinition = {
|
|
561
|
+
vendorExtensions: {}
|
|
562
|
+
};
|
|
561
563
|
var definition = obj.authorizations[name];
|
|
562
564
|
if(definition.type === 'apiKey') {
|
|
563
565
|
securityDefinition.type = 'apiKey';
|
package/lib/types/operation.js
CHANGED
|
@@ -21,6 +21,7 @@ var Operation = module.exports = function (parent, scheme, operationId, httpMeth
|
|
|
21
21
|
this.client = parent.options.client || null;
|
|
22
22
|
this.requestInterceptor = parent.options.requestInterceptor || null;
|
|
23
23
|
this.responseInterceptor = parent.options.responseInterceptor || null;
|
|
24
|
+
this.requestAgent = parent.options.requestAgent;
|
|
24
25
|
}
|
|
25
26
|
this.authorizations = args.security;
|
|
26
27
|
this.basePath = parent.basePath || '/';
|
|
@@ -49,6 +50,8 @@ var Operation = module.exports = function (parent, scheme, operationId, httpMeth
|
|
|
49
50
|
this.jqueryAjaxCache = parent.jqueryAjaxCache;
|
|
50
51
|
this.enableCookies = parent.enableCookies;
|
|
51
52
|
|
|
53
|
+
var key;
|
|
54
|
+
|
|
52
55
|
if(!this.host) {
|
|
53
56
|
if(typeof window !== 'undefined') {
|
|
54
57
|
this.host = window.location.host;
|
|
@@ -87,8 +90,6 @@ var Operation = module.exports = function (parent, scheme, operationId, httpMeth
|
|
|
87
90
|
|
|
88
91
|
if (definitions) {
|
|
89
92
|
// add to global models
|
|
90
|
-
var key;
|
|
91
|
-
|
|
92
93
|
for (key in definitions) {
|
|
93
94
|
model = new Model(key, definitions[key], this.models, parent.modelPropertyMacro);
|
|
94
95
|
|
|
@@ -102,7 +103,7 @@ var Operation = module.exports = function (parent, scheme, operationId, httpMeth
|
|
|
102
103
|
}
|
|
103
104
|
|
|
104
105
|
for (i = 0; i < this.parameters.length; i++) {
|
|
105
|
-
var param = this.parameters[i];
|
|
106
|
+
var d, param = this.parameters[i];
|
|
106
107
|
|
|
107
108
|
// Allow macro to set the default value
|
|
108
109
|
param.default = this.parameterMacro(this, param);
|
|
@@ -110,10 +111,6 @@ var Operation = module.exports = function (parent, scheme, operationId, httpMeth
|
|
|
110
111
|
if (param.type === 'array') {
|
|
111
112
|
param.isList = true;
|
|
112
113
|
param.allowMultiple = true;
|
|
113
|
-
// the enum can be defined at the items level
|
|
114
|
-
//if (param.items && param.items.enum) {
|
|
115
|
-
// param['enum'] = param.items.enum;
|
|
116
|
-
//}
|
|
117
114
|
}
|
|
118
115
|
|
|
119
116
|
var innerType = this.getType(param);
|
|
@@ -124,12 +121,15 @@ var Operation = module.exports = function (parent, scheme, operationId, httpMeth
|
|
|
124
121
|
param['enum'] = [true, false]; // use actual primitives
|
|
125
122
|
}
|
|
126
123
|
|
|
124
|
+
for(key in param) {
|
|
125
|
+
helpers.extractExtensions(key, param);
|
|
126
|
+
}
|
|
127
127
|
if(typeof param['x-example'] !== 'undefined') {
|
|
128
|
-
|
|
128
|
+
d = param['x-example'];
|
|
129
129
|
param.default = d;
|
|
130
130
|
}
|
|
131
131
|
if(param['x-examples']) {
|
|
132
|
-
|
|
132
|
+
d = param['x-examples'].default;
|
|
133
133
|
if(typeof d !== 'undefined') {
|
|
134
134
|
param.default = d;
|
|
135
135
|
}
|
|
@@ -170,7 +170,7 @@ var Operation = module.exports = function (parent, scheme, operationId, httpMeth
|
|
|
170
170
|
param.responseClassSignature = param.signature;
|
|
171
171
|
}
|
|
172
172
|
|
|
173
|
-
var defaultResponseCode, response, responses = this.responses;
|
|
173
|
+
var keyname, defaultResponseCode, response, responses = this.responses;
|
|
174
174
|
|
|
175
175
|
if (responses['200']) {
|
|
176
176
|
response = responses['200'];
|
|
@@ -198,6 +198,30 @@ var Operation = module.exports = function (parent, scheme, operationId, httpMeth
|
|
|
198
198
|
defaultResponseCode = 'default';
|
|
199
199
|
}
|
|
200
200
|
|
|
201
|
+
for(keyname in responses) {
|
|
202
|
+
helpers.extractExtensions(keyname, responses);
|
|
203
|
+
if(typeof keyname === 'string' && keyname.indexOf('x-') === -1) {
|
|
204
|
+
var responseObject = responses[keyname];
|
|
205
|
+
if(typeof responseObject === 'object' && typeof responseObject.headers === 'object') {
|
|
206
|
+
var headers = responseObject.headers;
|
|
207
|
+
for(var headerName in headers) {
|
|
208
|
+
var header = headers[headerName];
|
|
209
|
+
if(typeof header === 'object') {
|
|
210
|
+
for(var headerKey in header) {
|
|
211
|
+
helpers.extractExtensions(headerKey, header);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
if (response) {
|
|
220
|
+
for(keyname in response) {
|
|
221
|
+
helpers.extractExtensions(keyname, response);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
201
225
|
if (response && response.schema) {
|
|
202
226
|
var resolvedModel = this.resolveModel(response.schema, definitions);
|
|
203
227
|
var successResponse;
|
|
@@ -218,6 +242,7 @@ var Operation = module.exports = function (parent, scheme, operationId, httpMeth
|
|
|
218
242
|
}
|
|
219
243
|
|
|
220
244
|
if (successResponse) {
|
|
245
|
+
successResponse.vendorExtensions = response.vendorExtensions;
|
|
221
246
|
// Attach response properties
|
|
222
247
|
if (response.description) {
|
|
223
248
|
successResponse.description = response.description;
|
|
@@ -534,12 +559,12 @@ Operation.prototype.getMissingParams = function (args) {
|
|
|
534
559
|
return missingParams;
|
|
535
560
|
};
|
|
536
561
|
|
|
537
|
-
Operation.prototype.getBody = function (headers, args
|
|
538
|
-
var formParams = {}, hasFormParams, body, key, value, hasBody = false;
|
|
562
|
+
Operation.prototype.getBody = function (headers, args) {
|
|
563
|
+
var formParams = {}, hasFormParams, param, body, key, value, hasBody = false;
|
|
539
564
|
|
|
540
565
|
// look at each param and put form params in an object
|
|
541
566
|
for (var i = 0; i < this.parameters.length; i++) {
|
|
542
|
-
|
|
567
|
+
param = this.parameters[i];
|
|
543
568
|
if (typeof args[param.name] !== 'undefined') {
|
|
544
569
|
if (param.in === 'body') {
|
|
545
570
|
body = args[param.name];
|
|
@@ -576,7 +601,7 @@ Operation.prototype.getBody = function (headers, args, opts) {
|
|
|
576
601
|
var encoded = '';
|
|
577
602
|
|
|
578
603
|
for (key in formParams) {
|
|
579
|
-
|
|
604
|
+
param = formParams[key].param;
|
|
580
605
|
value = formParams[key].value;
|
|
581
606
|
|
|
582
607
|
if (typeof value !== 'undefined') {
|
|
@@ -605,7 +630,7 @@ Operation.prototype.getBody = function (headers, args, opts) {
|
|
|
605
630
|
bodyParam.type = 'formData';
|
|
606
631
|
|
|
607
632
|
for (key in formParams) {
|
|
608
|
-
|
|
633
|
+
param = formParams[key].param;
|
|
609
634
|
value = args[key];
|
|
610
635
|
|
|
611
636
|
if (typeof value !== 'undefined') {
|
|
@@ -743,14 +768,16 @@ Operation.prototype.execute = function (arg1, arg2, arg3, arg4, parent) {
|
|
|
743
768
|
error = arg4;
|
|
744
769
|
}
|
|
745
770
|
|
|
746
|
-
timeout = typeof opts.timeout !== 'undefined'
|
|
747
|
-
? opts.timeout
|
|
748
|
-
: this.timeout;
|
|
771
|
+
timeout = typeof opts.timeout !== 'undefined' ? opts.timeout : this.timeout;
|
|
749
772
|
|
|
750
773
|
if(this.client) {
|
|
751
774
|
opts.client = this.client;
|
|
752
775
|
}
|
|
753
776
|
|
|
777
|
+
if(this.requestAgent) {
|
|
778
|
+
opts.requestAgent = this.requestAgent;
|
|
779
|
+
}
|
|
780
|
+
|
|
754
781
|
// add the request interceptor from parent, if none sent from client
|
|
755
782
|
if(!opts.requestInterceptor && this.requestInterceptor ) {
|
|
756
783
|
opts.requestInterceptor = this.requestInterceptor ;
|
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
}
|
|
9
9
|
],
|
|
10
10
|
"description": "swagger-client is a javascript client for use with swaggering APIs.",
|
|
11
|
-
"version": "2.1.
|
|
11
|
+
"version": "2.1.25",
|
|
12
12
|
"homepage": "http://swagger.io",
|
|
13
13
|
"repository": {
|
|
14
14
|
"type": "git",
|
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
"gulp-istanbul": "^0.5.0",
|
|
56
56
|
"gulp-jshint": "^1.9.0",
|
|
57
57
|
"gulp-mocha": "^2.0.0",
|
|
58
|
+
"gulp-sourcemaps": "^1.0.0",
|
|
58
59
|
"http-server": "^0.8.0",
|
|
59
60
|
"jshint-stylish": "^1.0.1",
|
|
60
61
|
"karma": "^0.13.0",
|