diff --git a/Cakefile b/Cakefile index dbe6eb0f..3261c70c 100644 --- a/Cakefile +++ b/Cakefile @@ -8,6 +8,7 @@ sourceFiles = [ 'view/MainView' 'view/ResourceView' 'view/OperationView' + 'view/StatusCodeView' 'view/ParameterView' ] diff --git a/lib/swagger.js b/lib/swagger.js index a7e75de5..30deb25f 100644 --- a/lib/swagger.js +++ b/lib/swagger.js @@ -252,7 +252,7 @@ _results = []; for (_i = 0, _len = ops.length; _i < _len; _i++) { o = ops[_i]; - op = new SwaggerOperation(o.nickname, resource_path, o.httpMethod, o.parameters, o.summary, o.notes, o.responseClass, this); + op = new SwaggerOperation(o.nickname, resource_path, o.httpMethod, o.parameters, o.summary, o.notes, o.responseClass, o.errorResponses, this); this.operations[op.nickname] = op; _results.push(this.operationsArray.push(op)); } @@ -381,8 +381,8 @@ SwaggerOperation = (function() { - function SwaggerOperation(nickname, path, httpMethod, parameters, summary, notes, responseClass, resource) { - var parameter, v, _i, _j, _len, _len1, _ref, _ref1, + function SwaggerOperation(nickname, path, httpMethod, parameters, summary, notes, responseClass, errorResponses, resource) { + var parameter, v, _i, _j, _len, _len1, _ref, _ref1, _ref2, _this = this; this.nickname = nickname; this.path = path; @@ -391,6 +391,7 @@ this.summary = summary; this.notes = notes; this.responseClass = responseClass; + this.errorResponses = errorResponses; this.resource = resource; this["do"] = __bind(this["do"], this); @@ -407,15 +408,16 @@ this.httpMethod = this.httpMethod.toLowerCase(); this.isGetMethod = this.httpMethod === "get"; this.resourceName = this.resource.name; - if (this.responseClass.toLowerCase() === 'void') { + if (((_ref = this.responseClass) != null ? _ref.toLowerCase() : void 0) === 'void') { this.responseClass = void 0; } if (this.responseClass != null) { this.responseClassSignature = this.getSignature(this.responseClass, this.resource.models); } - _ref = this.parameters; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - parameter = _ref[_i]; + this.errorResponses = this.errorResponses || []; + _ref1 = this.parameters; + for (_i = 0, _len = _ref1.length; _i < _len; _i++) { + parameter = _ref1[_i]; parameter.name = parameter.name || parameter.dataType; if (parameter.dataType.toLowerCase() === 'boolean') { parameter.allowableValues = {}; @@ -430,9 +432,9 @@ } if (parameter.allowableValues.values != null) { parameter.allowableValues.descriptiveValues = []; - _ref1 = parameter.allowableValues.values; - for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { - v = _ref1[_j]; + _ref2 = parameter.allowableValues.values; + for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) { + v = _ref2[_j]; if ((parameter.defaultValue != null) && parameter.defaultValue === v) { parameter.allowableValues.descriptiveValues.push({ value: v, diff --git a/src/main/coffeescript/view/OperationView.coffee b/src/main/coffeescript/view/OperationView.coffee index c92098c6..0c211f17 100644 --- a/src/main/coffeescript/view/OperationView.coffee +++ b/src/main/coffeescript/view/OperationView.coffee @@ -16,6 +16,10 @@ class OperationView extends Backbone.View # Render each parameter @addParameter param for param in @model.parameters + + # Render each response code + @addStatusCode statusCode for statusCode in @model.errorResponses + @ addParameter: (param) -> @@ -23,6 +27,10 @@ class OperationView extends Backbone.View paramView = new ParameterView({model: param, tagName: 'tr', readOnly: @model.isReadOnly}) $('.operation-params', $(@el)).append paramView.render().el + addStatusCode: (statusCode) -> + # Render status codes + statusCodeView = new StatusCodeView({model: statusCode, tagName: 'tr'}) + $('.operation-status', $(@el)).append statusCodeView.render().el submitOperation: (e) -> e?.preventDefault() diff --git a/src/main/coffeescript/view/StatusCodeView.coffee b/src/main/coffeescript/view/StatusCodeView.coffee new file mode 100644 index 00000000..c00ca71a --- /dev/null +++ b/src/main/coffeescript/view/StatusCodeView.coffee @@ -0,0 +1,11 @@ +class StatusCodeView extends Backbone.View + initialize: -> + + render: -> + template = @template() + $(@el).html(template(@model)) + @ + + template: -> + Handlebars.templates.status_code + diff --git a/src/main/template/operation.handlebars b/src/main/template/operation.handlebars index 4398caed..8a59b085 100644 --- a/src/main/template/operation.handlebars +++ b/src/main/template/operation.handlebars @@ -45,6 +45,21 @@ + {{#if errorResponses}} +
+| HTTP Status Code | +Reason | +
|---|