Merge pull request #365 from xinvincible21/master
safe-JSON-parsing-check-for-type-undefined
This commit is contained in:
45
dist/lib/swagger.js
vendored
45
dist/lib/swagger.js
vendored
@@ -63,10 +63,18 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
response: function(rawResponse) {
|
response: function(rawResponse) {
|
||||||
var response;
|
if (/^[\],:{}\s]*$/.test(rawResponse.content.data.replace(/\\["\\\/bfnrtu]/g, '@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
|
||||||
response = JSON.parse(rawResponse.content.data);
|
try {
|
||||||
|
var response = JSON.parse(rawResponse.content.data);
|
||||||
|
} catch (e) {
|
||||||
|
var response = rawResponse.content.data;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var response = rawResponse.content.data;
|
||||||
|
}
|
||||||
_this.swaggerVersion = response.swaggerVersion;
|
_this.swaggerVersion = response.swaggerVersion;
|
||||||
if (_this.swaggerVersion === "1.2") {
|
|
||||||
|
if (_this.swaggerVersion === "1.2") {
|
||||||
return _this.buildFromSpec(response);
|
return _this.buildFromSpec(response);
|
||||||
} else {
|
} else {
|
||||||
return _this.buildFrom1_1Spec(response);
|
return _this.buildFrom1_1Spec(response);
|
||||||
@@ -290,7 +298,7 @@
|
|||||||
this.api.fail("SwaggerResources must have a path.");
|
this.api.fail("SwaggerResources must have a path.");
|
||||||
}
|
}
|
||||||
if (this.path.substring(0, 4) === 'http') {
|
if (this.path.substring(0, 4) === 'http') {
|
||||||
this.url = this.path.replace('{format}', 'json');
|
this.url = this.path.replace('{format}', 'json');
|
||||||
} else {
|
} else {
|
||||||
this.url = this.api.basePath + this.path.replace('{format}', 'json');
|
this.url = this.api.basePath + this.path.replace('{format}', 'json');
|
||||||
}
|
}
|
||||||
@@ -305,7 +313,16 @@
|
|||||||
},
|
},
|
||||||
response: function(rawResponse) {
|
response: function(rawResponse) {
|
||||||
var response;
|
var response;
|
||||||
response = JSON.parse(rawResponse.content.data);
|
if (/^[\],:{}\s]*$/.test(rawResponse.content.data.replace(/\\["\\\/bfnrtu]/g, '@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
|
||||||
|
try {
|
||||||
|
var response = JSON.parse(rawResponse.content.data);
|
||||||
|
} catch (e) {
|
||||||
|
var response = rawResponse.content.data;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var response = rawResponse.content.data;
|
||||||
|
}
|
||||||
|
|
||||||
return _this.addApiDeclaration(response);
|
return _this.addApiDeclaration(response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -641,10 +658,10 @@
|
|||||||
parameter = _ref1[_i];
|
parameter = _ref1[_i];
|
||||||
parameter.name = parameter.name || parameter.type || parameter.dataType;
|
parameter.name = parameter.name || parameter.type || parameter.dataType;
|
||||||
type = parameter.type || parameter.dataType;
|
type = parameter.type || parameter.dataType;
|
||||||
if (type.toLowerCase() === 'boolean') {
|
if (typeof(type) != 'undefined' && type.toLowerCase() === 'boolean') {
|
||||||
parameter.allowableValues = {};
|
parameter.allowableValues = {};
|
||||||
parameter.allowableValues.values = ["true", "false"];
|
parameter.allowableValues.values = ["true", "false"];
|
||||||
}
|
}
|
||||||
parameter.signature = this.getSignature(type, this.resource.models);
|
parameter.signature = this.getSignature(type, this.resource.models);
|
||||||
parameter.sampleJSON = this.getSampleJSON(type, this.resource.models);
|
parameter.sampleJSON = this.getSampleJSON(type, this.resource.models);
|
||||||
if (parameter["enum"] != null) {
|
if (parameter["enum"] != null) {
|
||||||
@@ -702,11 +719,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
SwaggerOperation.prototype.isListType = function(type) {
|
SwaggerOperation.prototype.isListType = function(type) {
|
||||||
if (type.indexOf('[') >= 0) {
|
if (typeof(type) != 'undefined' && type.indexOf('[') >= 0) {
|
||||||
return type.substring(type.indexOf('[') + 1, type.indexOf(']'));
|
return type.substring(type.indexOf('[') + 1, type.indexOf(']'));
|
||||||
} else {
|
} else {
|
||||||
return void 0;
|
return void 0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
SwaggerOperation.prototype.getSignature = function(type, models) {
|
SwaggerOperation.prototype.getSignature = function(type, models) {
|
||||||
|
|||||||
22
dist/swagger-ui.js
vendored
22
dist/swagger-ui.js
vendored
@@ -1509,14 +1509,16 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|||||||
contentTypeModel.produces = this.model.produces;
|
contentTypeModel.produces = this.model.produces;
|
||||||
_ref5 = this.model.parameters;
|
_ref5 = this.model.parameters;
|
||||||
for (_i = 0, _len = _ref5.length; _i < _len; _i++) {
|
for (_i = 0, _len = _ref5.length; _i < _len; _i++) {
|
||||||
param = _ref5[_i];
|
param = _ref5[_i];
|
||||||
type = param.type || param.dataType;
|
type = param.type || param.dataType;
|
||||||
if (type.toLowerCase() === 'file') {
|
|
||||||
if (!contentTypeModel.consumes) {
|
if (typeof(type) != 'undefined' && type.toLowerCase() === 'file') {
|
||||||
console.log("set content type ");
|
if (!contentTypeModel.consumes) {
|
||||||
contentTypeModel.consumes = 'multipart/form-data';
|
console.log("set content type ");
|
||||||
}
|
contentTypeModel.consumes = 'multipart/form-data';
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
responseContentTypeView = new ResponseContentTypeView({
|
responseContentTypeView = new ResponseContentTypeView({
|
||||||
model: contentTypeModel
|
model: contentTypeModel
|
||||||
@@ -1904,8 +1906,8 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|||||||
if (this.model.paramType === 'body') {
|
if (this.model.paramType === 'body') {
|
||||||
this.model.isBody = true;
|
this.model.isBody = true;
|
||||||
}
|
}
|
||||||
if (type.toLowerCase() === 'file') {
|
if (typeof(type) != 'undefined' && type.toLowerCase() === 'file') {
|
||||||
this.model.isFile = true;
|
this.model.isFile = true;
|
||||||
}
|
}
|
||||||
template = this.template();
|
template = this.template();
|
||||||
$(this.el).html(template(this.model));
|
$(this.el).html(template(this.model));
|
||||||
|
|||||||
@@ -63,10 +63,18 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
response: function(rawResponse) {
|
response: function(rawResponse) {
|
||||||
var response;
|
if (/^[\],:{}\s]*$/.test(rawResponse.content.data.replace(/\\["\\\/bfnrtu]/g, '@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
|
||||||
response = JSON.parse(rawResponse.content.data);
|
try {
|
||||||
|
var response = JSON.parse(rawResponse.content.data);
|
||||||
|
} catch (e) {
|
||||||
|
var response = rawResponse.content.data;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var response = rawResponse.content.data;
|
||||||
|
}
|
||||||
_this.swaggerVersion = response.swaggerVersion;
|
_this.swaggerVersion = response.swaggerVersion;
|
||||||
if (_this.swaggerVersion === "1.2") {
|
|
||||||
|
if (_this.swaggerVersion === "1.2") {
|
||||||
return _this.buildFromSpec(response);
|
return _this.buildFromSpec(response);
|
||||||
} else {
|
} else {
|
||||||
return _this.buildFrom1_1Spec(response);
|
return _this.buildFrom1_1Spec(response);
|
||||||
@@ -290,7 +298,7 @@
|
|||||||
this.api.fail("SwaggerResources must have a path.");
|
this.api.fail("SwaggerResources must have a path.");
|
||||||
}
|
}
|
||||||
if (this.path.substring(0, 4) === 'http') {
|
if (this.path.substring(0, 4) === 'http') {
|
||||||
this.url = this.path.replace('{format}', 'json');
|
this.url = this.path.replace('{format}', 'json');
|
||||||
} else {
|
} else {
|
||||||
this.url = this.api.basePath + this.path.replace('{format}', 'json');
|
this.url = this.api.basePath + this.path.replace('{format}', 'json');
|
||||||
}
|
}
|
||||||
@@ -305,7 +313,16 @@
|
|||||||
},
|
},
|
||||||
response: function(rawResponse) {
|
response: function(rawResponse) {
|
||||||
var response;
|
var response;
|
||||||
response = JSON.parse(rawResponse.content.data);
|
if (/^[\],:{}\s]*$/.test(rawResponse.content.data.replace(/\\["\\\/bfnrtu]/g, '@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
|
||||||
|
try {
|
||||||
|
var response = JSON.parse(rawResponse.content.data);
|
||||||
|
} catch (e) {
|
||||||
|
var response = rawResponse.content.data;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var response = rawResponse.content.data;
|
||||||
|
}
|
||||||
|
|
||||||
return _this.addApiDeclaration(response);
|
return _this.addApiDeclaration(response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -641,10 +658,10 @@
|
|||||||
parameter = _ref1[_i];
|
parameter = _ref1[_i];
|
||||||
parameter.name = parameter.name || parameter.type || parameter.dataType;
|
parameter.name = parameter.name || parameter.type || parameter.dataType;
|
||||||
type = parameter.type || parameter.dataType;
|
type = parameter.type || parameter.dataType;
|
||||||
if (type.toLowerCase() === 'boolean') {
|
if (typeof(type) != 'undefined' && type.toLowerCase() === 'boolean') {
|
||||||
parameter.allowableValues = {};
|
parameter.allowableValues = {};
|
||||||
parameter.allowableValues.values = ["true", "false"];
|
parameter.allowableValues.values = ["true", "false"];
|
||||||
}
|
}
|
||||||
parameter.signature = this.getSignature(type, this.resource.models);
|
parameter.signature = this.getSignature(type, this.resource.models);
|
||||||
parameter.sampleJSON = this.getSampleJSON(type, this.resource.models);
|
parameter.sampleJSON = this.getSampleJSON(type, this.resource.models);
|
||||||
if (parameter["enum"] != null) {
|
if (parameter["enum"] != null) {
|
||||||
@@ -702,11 +719,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
SwaggerOperation.prototype.isListType = function(type) {
|
SwaggerOperation.prototype.isListType = function(type) {
|
||||||
if (type.indexOf('[') >= 0) {
|
if (typeof(type) != 'undefined' && type.indexOf('[') >= 0) {
|
||||||
return type.substring(type.indexOf('[') + 1, type.indexOf(']'));
|
return type.substring(type.indexOf('[') + 1, type.indexOf(']'));
|
||||||
} else {
|
} else {
|
||||||
return void 0;
|
return void 0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
SwaggerOperation.prototype.getSignature = function(type, models) {
|
SwaggerOperation.prototype.getSignature = function(type, models) {
|
||||||
|
|||||||
Reference in New Issue
Block a user