Skip to content

Commit 81aed5e

Browse files
committed
Merge pull request #644 from jbach/fix-interceptors
pass both interceptors to resolver, converter and operation
2 parents e9bd43d + e9fcc32 commit 81aed5e

File tree

7 files changed

+9145
-9098
lines changed

7 files changed

+9145
-9098
lines changed

browser/swagger-client.js

Lines changed: 8953 additions & 8920 deletions
Large diffs are not rendered by default.

browser/swagger-client.min.js

Lines changed: 160 additions & 165 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/client.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ SwaggerClient.prototype.build = function (mock) {
201201
self.oldSwaggerObject = self.swaggerObject;
202202

203203
converter.setDocumentationLocation(self.url);
204-
converter.convert(responseObj, self.clientAuthorizations, function(spec) {
204+
converter.convert(responseObj, self.clientAuthorizations, self.options, function(spec) {
205205
self.swaggerObject = spec;
206206
new Resolver().resolve(spec, self.url, self.buildFromSpec, self);
207207
self.isValid = true;

lib/resolver.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ Resolver.prototype.processAllOf = function(name, definition, resolutionTable, un
3333

3434
Resolver.prototype.resolve = function (spec, arg1, arg2, arg3) {
3535
this.spec = spec;
36-
var root = arg1, callback = arg2, scope = arg3, location, i;
36+
var root = arg1, callback = arg2, scope = arg3, opts = {}, location, i;
3737
if(typeof arg1 === 'function') {
3838
root = null;
3939
callback = arg1;
@@ -43,6 +43,14 @@ Resolver.prototype.resolve = function (spec, arg1, arg2, arg3) {
4343
this.scope = (scope || this);
4444
this.iteration = this.iteration || 0;
4545

46+
if(this.scope.options && this.scope.options.requestInterceptor){
47+
opts.requestInterceptor = this.scope.options.requestInterceptor;
48+
}
49+
50+
if(this.scope.options && this.scope.options.responseInterceptor){
51+
opts.responseInterceptor = this.scope.options.responseInterceptor;
52+
}
53+
4654
var name, path, property, propertyName;
4755
var processedCalls = 0, resolvedRefs = {}, unresolvedRefs = {};
4856
var resolutionTable = []; // store objects for dereferencing
@@ -275,7 +283,8 @@ Resolver.prototype.resolve = function (spec, arg1, arg2, arg3) {
275283
if (scope && scope.clientAuthorizations) {
276284
scope.clientAuthorizations.apply(obj);
277285
}
278-
new SwaggerHttp().execute(obj);
286+
287+
new SwaggerHttp().execute(obj, opts);
279288
}
280289
}(toResolve[ii], spec, this));
281290
}

lib/spec-converter.js

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ SwaggerSpecConverter.prototype.setDocumentationLocation = function (location) {
1818
/**
1919
* converts a resource listing OR api declaration
2020
**/
21-
SwaggerSpecConverter.prototype.convert = function (obj, clientAuthorizations, callback) {
21+
SwaggerSpecConverter.prototype.convert = function (obj, clientAuthorizations, opts, callback) {
2222
// not a valid spec
2323
if(!obj || !Array.isArray(obj.apis)) {
2424
return this.finish(callback, null);
@@ -55,7 +55,7 @@ SwaggerSpecConverter.prototype.convert = function (obj, clientAuthorizations, ca
5555
this.finish(callback, swagger);
5656
}
5757
else {
58-
this.resourceListing(obj, swagger, callback);
58+
this.resourceListing(obj, swagger, opts, callback);
5959
}
6060
};
6161

@@ -454,12 +454,21 @@ SwaggerSpecConverter.prototype.toJsonSchema = function(source) {
454454
}
455455
};
456456

457-
SwaggerSpecConverter.prototype.resourceListing = function(obj, swagger, callback) {
457+
SwaggerSpecConverter.prototype.resourceListing = function(obj, swagger, opts, callback) {
458458
var i;
459459
var processedCount = 0; // jshint ignore:line
460460
var self = this; // jshint ignore:line
461461
var expectedCount = obj.apis.length;
462462
var _swagger = swagger; // jshint ignore:line
463+
var _opts = {};
464+
465+
if(opts && opts.requestInterceptor){
466+
_opts.requestInterceptor = opts.requestInterceptor;
467+
}
468+
469+
if(opts && opts.responseInterceptor){
470+
_opts.responseInterceptor = opts.responseInterceptor;
471+
}
463472

464473
if(expectedCount === 0) {
465474
this.finish(callback, swagger);
@@ -507,7 +516,7 @@ SwaggerSpecConverter.prototype.resourceListing = function(obj, swagger, callback
507516
this.clientAuthorizations.apply(http);
508517
}
509518

510-
new SwaggerHttp().execute(http);
519+
new SwaggerHttp().execute(http, _opts);
511520
}
512521
};
513522

lib/types/operation.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ var Operation = module.exports = function (parent, scheme, operationId, httpMeth
1919

2020
if(parent && parent.options) {
2121
this.client = parent.options.client || null;
22+
this.requestInterceptor = parent.options.requestInterceptor || null;
2223
this.responseInterceptor = parent.options.responseInterceptor || null;
2324
}
2425
this.authorizations = args.security;

test/compat/converter.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ describe('converts specs', function () {
2626

2727
it('ignores an empty spec', function(done) {
2828
var converter = new SwaggerSpecConverter();
29-
converter.convert({}, {}, function(result) {
29+
converter.convert({}, {}, {}, function(result) {
3030
expect(result).toBe(null);
3131
done();
3232
});
@@ -42,7 +42,7 @@ describe('converts specs', function () {
4242
obj.on.response = function(data) {
4343
var converter = new SwaggerSpecConverter();
4444
converter.setDocumentationLocation('http://localhost:8001/v1/api-docs');
45-
converter.convert(data.obj, {}, function(swagger) {
45+
converter.convert(data.obj, {}, {}, function(swagger) {
4646
test.array(swagger.tags);
4747
var petTag = swagger.tags[0];
4848
var userTag = swagger.tags[1];
@@ -124,7 +124,7 @@ describe('converts specs', function () {
124124
obj.on.response = function(data) {
125125
var converter = new SwaggerSpecConverter();
126126
converter.setDocumentationLocation('http://localhost:8001/v1/api-docs');
127-
converter.convert(data.obj, {}, function(swagger) {
127+
converter.convert(data.obj, {}, {}, function(swagger) {
128128

129129
// metadata tests
130130
expect(swagger.swagger).toBe('2.0');
@@ -206,7 +206,7 @@ describe('converts specs', function () {
206206
obj.on.response = function(data) {
207207
var converter = new SwaggerSpecConverter();
208208
converter.setDocumentationLocation('http://localhost:8001/v1/word.json');
209-
converter.convert(data.obj, {}, function(swagger) {
209+
converter.convert(data.obj, {}, {}, function(swagger) {
210210
expect(Object.keys(swagger.paths).length).toBe(12);
211211

212212
var getDefinitions = swagger.paths['/word.{format}/{word}/definitions'].get;
@@ -260,7 +260,7 @@ describe('converts specs', function () {
260260
obj.on.response = function(data) {
261261
var converter = new SwaggerSpecConverter();
262262
converter.setDocumentationLocation('http://localhost:8001/v1/api-docs');
263-
converter.convert(data.obj, {}, function(swagger) {
263+
converter.convert(data.obj, {}, {}, function(swagger) {
264264
issuesSpec = swagger;
265265
done();
266266
});
@@ -320,7 +320,7 @@ describe('converts specs', function () {
320320
expect(operation.successResponse[200].definition).toBeAn('object');
321321
expect(operation.responses[400].schema).toBeAn('object');
322322
expect(operation.responses[400].schema['$ref']).toBe('#/definitions/VeryBad');
323-
expect(callCount).toEqual(1);
323+
expect(callCount).toEqual(4);
324324
done();
325325
}).catch(function(e) {
326326
console.log(e);

0 commit comments

Comments
 (0)