restrict uploaded file inputs to those in the form being submitted

This commit is contained in:
Bryan Matsuo
2013-12-20 17:17:06 -08:00
parent 7f68c35742
commit fc0ccd4486
4 changed files with 79 additions and 77 deletions

2
dist/index.html vendored
View File

@@ -5,7 +5,7 @@
<link href='//fonts.googleapis.com/css?family=Droid+Sans:400,700' rel='stylesheet' type='text/css'/> <link href='//fonts.googleapis.com/css?family=Droid+Sans:400,700' rel='stylesheet' type='text/css'/>
<link href='css/highlight.default.css' media='screen' rel='stylesheet' type='text/css'/> <link href='css/highlight.default.css' media='screen' rel='stylesheet' type='text/css'/>
<link href='css/screen.css' media='screen' rel='stylesheet' type='text/css'/> <link href='css/screen.css' media='screen' rel='stylesheet' type='text/css'/>
<script type="text/javascript" src="lib/shred.bundle.js" /></script> <script type="text/javascript" src="lib/shred.bundle.js"></script>
<script src='lib/jquery-1.8.0.min.js' type='text/javascript'></script> <script src='lib/jquery-1.8.0.min.js' type='text/javascript'></script>
<script src='lib/jquery.slideto.min.js' type='text/javascript'></script> <script src='lib/jquery.slideto.min.js' type='text/javascript'></script>
<script src='lib/jquery.wiggle.min.js' type='text/javascript'></script> <script src='lib/jquery.wiggle.min.js' type='text/javascript'></script>

150
dist/swagger-ui.js vendored
View File

@@ -1182,18 +1182,18 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
// Generated by CoffeeScript 1.6.3 // Generated by CoffeeScript 1.5.0
(function() { (function() {
var ContentTypeView, HeaderView, MainView, OperationView, ParameterContentTypeView, ParameterView, ResourceView, ResponseContentTypeView, SignatureView, StatusCodeView, SwaggerUi, _ref, _ref1, _ref10, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, var ContentTypeView, HeaderView, MainView, OperationView, ParameterContentTypeView, ParameterView, ResourceView, ResponseContentTypeView, SignatureView, StatusCodeView, SwaggerUi,
__hasProp = {}.hasOwnProperty, __hasProp = {}.hasOwnProperty,
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
SwaggerUi = (function(_super) { SwaggerUi = (function(_super) {
__extends(SwaggerUi, _super); __extends(SwaggerUi, _super);
function SwaggerUi() { function SwaggerUi() {
_ref = SwaggerUi.__super__.constructor.apply(this, arguments); SwaggerUi.__super__.constructor.apply(this, arguments);
return _ref;
} }
SwaggerUi.prototype.dom_id = "swagger_ui"; SwaggerUi.prototype.dom_id = "swagger_ui";
@@ -1242,9 +1242,9 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
}; };
SwaggerUi.prototype.load = function() { SwaggerUi.prototype.load = function() {
var url, _ref1; var url, _ref;
if ((_ref1 = this.mainView) != null) { if ((_ref = this.mainView) != null) {
_ref1.clear(); _ref.clear();
} }
url = this.options.url; url = this.options.url;
if (url.indexOf("http") !== 0) { if (url.indexOf("http") !== 0) {
@@ -1322,11 +1322,11 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
window.SwaggerUi = SwaggerUi; window.SwaggerUi = SwaggerUi;
HeaderView = (function(_super) { HeaderView = (function(_super) {
__extends(HeaderView, _super); __extends(HeaderView, _super);
function HeaderView() { function HeaderView() {
_ref1 = HeaderView.__super__.constructor.apply(this, arguments); HeaderView.__super__.constructor.apply(this, arguments);
return _ref1;
} }
HeaderView.prototype.events = { HeaderView.prototype.events = {
@@ -1384,21 +1384,21 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
})(Backbone.View); })(Backbone.View);
MainView = (function(_super) { MainView = (function(_super) {
__extends(MainView, _super); __extends(MainView, _super);
function MainView() { function MainView() {
_ref2 = MainView.__super__.constructor.apply(this, arguments); MainView.__super__.constructor.apply(this, arguments);
return _ref2;
} }
MainView.prototype.initialize = function() {}; MainView.prototype.initialize = function() {};
MainView.prototype.render = function() { MainView.prototype.render = function() {
var resource, _i, _len, _ref3; var resource, _i, _len, _ref;
$(this.el).html(Handlebars.templates.main(this.model)); $(this.el).html(Handlebars.templates.main(this.model));
_ref3 = this.model.apisArray; _ref = this.model.apisArray;
for (_i = 0, _len = _ref3.length; _i < _len; _i++) { for (_i = 0, _len = _ref.length; _i < _len; _i++) {
resource = _ref3[_i]; resource = _ref[_i];
this.addResource(resource); this.addResource(resource);
} }
return this; return this;
@@ -1424,23 +1424,23 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
})(Backbone.View); })(Backbone.View);
ResourceView = (function(_super) { ResourceView = (function(_super) {
__extends(ResourceView, _super); __extends(ResourceView, _super);
function ResourceView() { function ResourceView() {
_ref3 = ResourceView.__super__.constructor.apply(this, arguments); ResourceView.__super__.constructor.apply(this, arguments);
return _ref3;
} }
ResourceView.prototype.initialize = function() {}; ResourceView.prototype.initialize = function() {};
ResourceView.prototype.render = function() { ResourceView.prototype.render = function() {
var operation, _i, _len, _ref4; var operation, _i, _len, _ref;
console.log(this.model.description); console.log(this.model.description);
$(this.el).html(Handlebars.templates.resource(this.model)); $(this.el).html(Handlebars.templates.resource(this.model));
this.number = 0; this.number = 0;
_ref4 = this.model.operationsArray; _ref = this.model.operationsArray;
for (_i = 0, _len = _ref4.length; _i < _len; _i++) { for (_i = 0, _len = _ref.length; _i < _len; _i++) {
operation = _ref4[_i]; operation = _ref[_i];
this.addOperation(operation); this.addOperation(operation);
} }
return this; return this;
@@ -1463,11 +1463,11 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
})(Backbone.View); })(Backbone.View);
OperationView = (function(_super) { OperationView = (function(_super) {
__extends(OperationView, _super); __extends(OperationView, _super);
function OperationView() { function OperationView() {
_ref4 = OperationView.__super__.constructor.apply(this, arguments); OperationView.__super__.constructor.apply(this, arguments);
return _ref4;
} }
OperationView.prototype.invocationUrl = null; OperationView.prototype.invocationUrl = null;
@@ -1482,7 +1482,7 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
OperationView.prototype.initialize = function() {}; OperationView.prototype.initialize = function() {};
OperationView.prototype.render = function() { OperationView.prototype.render = function() {
var contentTypeModel, isMethodSubmissionSupported, param, responseContentTypeView, responseSignatureView, signatureModel, statusCode, type, _i, _j, _k, _len, _len1, _len2, _ref5, _ref6, _ref7; var contentTypeModel, isMethodSubmissionSupported, param, responseContentTypeView, responseSignatureView, signatureModel, statusCode, type, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2;
isMethodSubmissionSupported = true; isMethodSubmissionSupported = true;
if (!isMethodSubmissionSupported) { if (!isMethodSubmissionSupported) {
this.model.isReadOnly = true; this.model.isReadOnly = true;
@@ -1507,9 +1507,9 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
}; };
contentTypeModel.consumes = this.model.consumes; contentTypeModel.consumes = this.model.consumes;
contentTypeModel.produces = this.model.produces; contentTypeModel.produces = this.model.produces;
_ref5 = this.model.parameters; _ref = this.model.parameters;
for (_i = 0, _len = _ref5.length; _i < _len; _i++) { for (_i = 0, _len = _ref.length; _i < _len; _i++) {
param = _ref5[_i]; param = _ref[_i];
type = param.type || param.dataType; type = param.type || param.dataType;
if (type.toLowerCase() === 'file') { if (type.toLowerCase() === 'file') {
if (!contentTypeModel.consumes) { if (!contentTypeModel.consumes) {
@@ -1522,14 +1522,14 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
model: contentTypeModel model: contentTypeModel
}); });
$('.response-content-type', $(this.el)).append(responseContentTypeView.render().el); $('.response-content-type', $(this.el)).append(responseContentTypeView.render().el);
_ref6 = this.model.parameters; _ref1 = this.model.parameters;
for (_j = 0, _len1 = _ref6.length; _j < _len1; _j++) { for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
param = _ref6[_j]; param = _ref1[_j];
this.addParameter(param, contentTypeModel.consumes); this.addParameter(param, contentTypeModel.consumes);
} }
_ref7 = this.model.responseMessages; _ref2 = this.model.responseMessages;
for (_k = 0, _len2 = _ref7.length; _k < _len2; _k++) { for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
statusCode = _ref7[_k]; statusCode = _ref2[_k];
this.addStatusCode(statusCode); this.addStatusCode(statusCode);
} }
return this; return this;
@@ -1556,7 +1556,7 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
}; };
OperationView.prototype.submitOperation = function(e) { OperationView.prototype.submitOperation = function(e) {
var error_free, form, isFileUpload, map, o, opts, val, _i, _j, _k, _len, _len1, _len2, _ref5, _ref6, _ref7; var error_free, form, isFileUpload, map, o, opts, val, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2;
if (e != null) { if (e != null) {
e.preventDefault(); e.preventDefault();
} }
@@ -1581,9 +1581,9 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
parent: this parent: this
}; };
isFileUpload = false; isFileUpload = false;
_ref5 = form.find("input"); _ref = form.find("input");
for (_i = 0, _len = _ref5.length; _i < _len; _i++) { for (_i = 0, _len = _ref.length; _i < _len; _i++) {
o = _ref5[_i]; o = _ref[_i];
if ((o.value != null) && jQuery.trim(o.value).length > 0) { if ((o.value != null) && jQuery.trim(o.value).length > 0) {
map[o.name] = o.value; map[o.name] = o.value;
} }
@@ -1591,16 +1591,16 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
isFileUpload = true; isFileUpload = true;
} }
} }
_ref6 = form.find("textarea"); _ref1 = form.find("textarea");
for (_j = 0, _len1 = _ref6.length; _j < _len1; _j++) { for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
o = _ref6[_j]; o = _ref1[_j];
if ((o.value != null) && jQuery.trim(o.value).length > 0) { if ((o.value != null) && jQuery.trim(o.value).length > 0) {
map["body"] = o.value; map["body"] = o.value;
} }
} }
_ref7 = form.find("select"); _ref2 = form.find("select");
for (_k = 0, _len2 = _ref7.length; _k < _len2; _k++) { for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
o = _ref7[_k]; o = _ref2[_k];
val = this.getSelectedValue(o); val = this.getSelectedValue(o);
if ((val != null) && jQuery.trim(val).length > 0) { if ((val != null) && jQuery.trim(val).length > 0) {
map[o.name] = val; map[o.name] = val;
@@ -1622,36 +1622,38 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
}; };
OperationView.prototype.handleFileUpload = function(map, form) { OperationView.prototype.handleFileUpload = function(map, form) {
var bodyParam, headerParams, o, obj, param, _i, _j, _k, _len, _len1, _len2, _ref5, _ref6, _ref7, var bodyParam, el, headerParams, o, obj, param, _i, _j, _k, _l, _len, _len1, _len2, _len3, _ref, _ref1, _ref2, _ref3,
_this = this; _this = this;
console.log("it's a file upload"); console.log("it's a file upload");
_ref5 = form.serializeArray(); _ref = form.serializeArray();
for (_i = 0, _len = _ref5.length; _i < _len; _i++) { for (_i = 0, _len = _ref.length; _i < _len; _i++) {
o = _ref5[_i]; o = _ref[_i];
if ((o.value != null) && jQuery.trim(o.value).length > 0) { if ((o.value != null) && jQuery.trim(o.value).length > 0) {
map[o.name] = o.value; map[o.name] = o.value;
} }
} }
bodyParam = new FormData(); bodyParam = new FormData();
_ref6 = this.model.parameters; _ref1 = this.model.parameters;
for (_j = 0, _len1 = _ref6.length; _j < _len1; _j++) { for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
param = _ref6[_j]; param = _ref1[_j];
if (param.paramType === 'form') { if (param.paramType === 'form') {
bodyParam.append(param.name, map[param.name]); bodyParam.append(param.name, map[param.name]);
} }
} }
headerParams = {}; headerParams = {};
_ref7 = this.model.parameters; _ref2 = this.model.parameters;
for (_k = 0, _len2 = _ref7.length; _k < _len2; _k++) { for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
param = _ref7[_k]; param = _ref2[_k];
if (param.paramType === 'header') { if (param.paramType === 'header') {
headerParams[param.name] = map[param.name]; headerParams[param.name] = map[param.name];
} }
} }
console.log(headerParams); console.log(headerParams);
$.each($('input[type~="file"]'), function(i, el) { _ref3 = form.find('input[type~="file"]');
return bodyParam.append($(el).attr('name'), el.files[0]); for (_l = 0, _len3 = _ref3.length; _l < _len3; _l++) {
}); el = _ref3[_l];
bodyParam.append($(el).attr('name'), el.files[0]);
}
console.log(bodyParam); console.log(bodyParam);
this.invocationUrl = this.model.supportHeaderParams() ? (headerParams = this.model.getHeaderParams(map), this.model.urlify(map, false)) : this.model.urlify(map, true); this.invocationUrl = this.model.supportHeaderParams() ? (headerParams = this.model.getHeaderParams(map), this.model.urlify(map, false)) : this.model.urlify(map, true);
$(".request_url", $(this.el)).html("<pre>" + this.invocationUrl + "</pre>"); $(".request_url", $(this.el)).html("<pre>" + this.invocationUrl + "</pre>");
@@ -1698,14 +1700,14 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
}; };
OperationView.prototype.getSelectedValue = function(select) { OperationView.prototype.getSelectedValue = function(select) {
var opt, options, _i, _len, _ref5; var opt, options, _i, _len, _ref;
if (!select.multiple) { if (!select.multiple) {
return select.value; return select.value;
} else { } else {
options = []; options = [];
_ref5 = select.options; _ref = select.options;
for (_i = 0, _len = _ref5.length; _i < _len; _i++) { for (_i = 0, _len = _ref.length; _i < _len; _i++) {
opt = _ref5[_i]; opt = _ref[_i];
if (opt.selected) { if (opt.selected) {
options.push(opt.value); options.push(opt.value);
} }
@@ -1793,9 +1795,9 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
padding = ''; padding = '';
indent += transitions[fromTo]; indent += transitions[fromTo];
padding = ((function() { padding = ((function() {
var _j, _ref5, _results; var _j, _ref, _results;
_results = []; _results = [];
for (j = _j = 0, _ref5 = indent; 0 <= _ref5 ? _j < _ref5 : _j > _ref5; j = 0 <= _ref5 ? ++_j : --_j) { for (j = _j = 0, _ref = indent; 0 <= _ref ? _j < _ref : _j > _ref; j = 0 <= _ref ? ++_j : --_j) {
_results.push(' '); _results.push(' ');
} }
return _results; return _results;
@@ -1862,11 +1864,11 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
})(Backbone.View); })(Backbone.View);
StatusCodeView = (function(_super) { StatusCodeView = (function(_super) {
__extends(StatusCodeView, _super); __extends(StatusCodeView, _super);
function StatusCodeView() { function StatusCodeView() {
_ref5 = StatusCodeView.__super__.constructor.apply(this, arguments); StatusCodeView.__super__.constructor.apply(this, arguments);
return _ref5;
} }
StatusCodeView.prototype.initialize = function() {}; StatusCodeView.prototype.initialize = function() {};
@@ -1887,11 +1889,11 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
})(Backbone.View); })(Backbone.View);
ParameterView = (function(_super) { ParameterView = (function(_super) {
__extends(ParameterView, _super); __extends(ParameterView, _super);
function ParameterView() { function ParameterView() {
_ref6 = ParameterView.__super__.constructor.apply(this, arguments); ParameterView.__super__.constructor.apply(this, arguments);
return _ref6;
} }
ParameterView.prototype.initialize = function() {}; ParameterView.prototype.initialize = function() {};
@@ -1968,11 +1970,11 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
})(Backbone.View); })(Backbone.View);
SignatureView = (function(_super) { SignatureView = (function(_super) {
__extends(SignatureView, _super); __extends(SignatureView, _super);
function SignatureView() { function SignatureView() {
_ref7 = SignatureView.__super__.constructor.apply(this, arguments); SignatureView.__super__.constructor.apply(this, arguments);
return _ref7;
} }
SignatureView.prototype.events = { SignatureView.prototype.events = {
@@ -2037,11 +2039,11 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
})(Backbone.View); })(Backbone.View);
ContentTypeView = (function(_super) { ContentTypeView = (function(_super) {
__extends(ContentTypeView, _super); __extends(ContentTypeView, _super);
function ContentTypeView() { function ContentTypeView() {
_ref8 = ContentTypeView.__super__.constructor.apply(this, arguments); ContentTypeView.__super__.constructor.apply(this, arguments);
return _ref8;
} }
ContentTypeView.prototype.initialize = function() {}; ContentTypeView.prototype.initialize = function() {};
@@ -2063,11 +2065,11 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
})(Backbone.View); })(Backbone.View);
ResponseContentTypeView = (function(_super) { ResponseContentTypeView = (function(_super) {
__extends(ResponseContentTypeView, _super); __extends(ResponseContentTypeView, _super);
function ResponseContentTypeView() { function ResponseContentTypeView() {
_ref9 = ResponseContentTypeView.__super__.constructor.apply(this, arguments); ResponseContentTypeView.__super__.constructor.apply(this, arguments);
return _ref9;
} }
ResponseContentTypeView.prototype.initialize = function() {}; ResponseContentTypeView.prototype.initialize = function() {};
@@ -2089,11 +2091,11 @@ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
})(Backbone.View); })(Backbone.View);
ParameterContentTypeView = (function(_super) { ParameterContentTypeView = (function(_super) {
__extends(ParameterContentTypeView, _super); __extends(ParameterContentTypeView, _super);
function ParameterContentTypeView() { function ParameterContentTypeView() {
_ref10 = ParameterContentTypeView.__super__.constructor.apply(this, arguments); ParameterContentTypeView.__super__.constructor.apply(this, arguments);
return _ref10;
} }
ParameterContentTypeView.prototype.initialize = function() {}; ParameterContentTypeView.prototype.initialize = function() {};

File diff suppressed because one or more lines are too long

View File

@@ -132,7 +132,7 @@ class OperationView extends Backbone.View
console.log headerParams console.log headerParams
# add files # add files
$.each $('input[type~="file"]'), (i, el) -> for el in form.find('input[type~="file"]')
bodyParam.append($(el).attr('name'), el.files[0]) bodyParam.append($(el).attr('name'), el.files[0])
console.log(bodyParam) console.log(bodyParam)