From 52d9ce277c71024c50f566da302db65b6c1bb5bb Mon Sep 17 00:00:00 2001 From: Mohsen Azimi Date: Thu, 12 Mar 2015 17:54:30 -0700 Subject: [PATCH] Remove CoffeeScript folder --- src/main/coffeescript/SwaggerUi.coffee | 151 ------ src/main/coffeescript/view/MainView.coffee | 75 --- .../coffeescript/view/OperationView.coffee | 464 ------------------ .../coffeescript/view/ResourceView.coffee | 59 --- .../coffeescript/view/StatusCodeView.coffee | 25 - 5 files changed, 774 deletions(-) delete mode 100644 src/main/coffeescript/SwaggerUi.coffee delete mode 100644 src/main/coffeescript/view/MainView.coffee delete mode 100644 src/main/coffeescript/view/OperationView.coffee delete mode 100644 src/main/coffeescript/view/ResourceView.coffee delete mode 100644 src/main/coffeescript/view/StatusCodeView.coffee diff --git a/src/main/coffeescript/SwaggerUi.coffee b/src/main/coffeescript/SwaggerUi.coffee deleted file mode 100644 index 2c03b69a..00000000 --- a/src/main/coffeescript/SwaggerUi.coffee +++ /dev/null @@ -1,151 +0,0 @@ -class SwaggerUi extends Backbone.Router - - # Defaults - domEl: $('#swagger_ui') - - # Attributes - options: null - api: null - headerView: null - mainView: null - - # SwaggerUi accepts all the same options as SwaggerApi - initialize: (options={}) -> - # Allow dom_id to be overridden - if options.dom_id? - @domEl = $('#' + options.dom_id) - delete options.dom_id - - # Allow domeEl to be specified - else if options.domEl? - @domEl = options.domEl - - if not options.supportedSubmitMethods? - options.supportedSubmitMethods = [ - 'get' - 'put' - 'post' - 'delete' - 'head' - 'options' - 'patch' - ] - - # Make sure this.domeEl is a jQuery element - @domEl = $(@domEl) - - # if domEl is not attached to document append it to - if !$.contains(document.documentElement, @domEl.get(0)) - $('body').append(@domEl) - - @options = options - - # set marked options - marked.setOptions(gfm: true) - - # Set the callbacks - @options.success = => - @render() - @options.progress = (d) => @showMessage(d) - @options.failure = (d) => - @onLoadFailure(d) - - # Create view to handle the header inputs if there is header element - if $('#header').length - @headerView = new HeaderView({el: $('#header')}) - - # Event handler for when the baseUrl/apiKey is entered by user - @headerView.on 'update-swagger-ui', (data) => @updateSwaggerUi(data) - - # Set an option after initializing - setOption: (option,value) -> - @options[option] = value - - # Get the value of a previously set option - getOption: (option) -> - @options[option] - - # Event handler for when url/key is received from user - updateSwaggerUi: (data) -> - @options.url = data.url - @load() - - # Create an api and render - load: -> - # Initialize the API object - @mainView?.clear() - url = @options.url - if url && url.indexOf("http") isnt 0 - url = @buildUrl(window.location.href.toString(), url) - - @options.url = url - if @headerView - @headerView.update(url) - - @api = new SwaggerClient(@options) - - # collapse all sections - collapseAll:() -> - Docs.collapseEndpointListForResource('') - - # list operations for all sections - listAll:() -> - Docs.collapseOperationsForResource('') - - # expand operations for all sections - expandAll:() -> - Docs.expandOperationsForResource('') - - # This is bound to success handler for SwaggerApi - # so it gets called when SwaggerApi completes loading - render:() -> - @showMessage('Finished Loading Resource Information. Rendering Swagger UI...') - @mainView = new MainView({model: @api, el: @domEl, swaggerOptions: @options, router: @}).render() - @showMessage() - switch @options.docExpansion - when "full" then @expandAll() - when "list" then @listAll() - @renderGFM() - @options.onComplete(@api, @) if @options.onComplete - setTimeout( - => - Docs.shebang() - 100 - ) - - buildUrl: (base, url) -> - if url.indexOf("/") is 0 - parts = base.split("/") - base = parts[0] + "//" + parts[2] - base + url - else - endOfPath = base.length - if base.indexOf("?") > -1 - endOfPath = Math.min(endOfPath, base.indexOf("?")) - if base.indexOf("#") > -1 - endOfPath = Math.min(endOfPath, base.indexOf("#")) - base = base.substring(0, endOfPath); - if base.indexOf( "/", base.length - 1 ) isnt -1 - return base + url - return base + "/" + url - - # Shows message on topbar of the ui - showMessage: (data = '') -> - $('#message-bar').removeClass 'message-fail' - $('#message-bar').addClass 'message-success' - $('#message-bar').html data - - # shows message in red - onLoadFailure: (data = '') -> - $('#message-bar').removeClass 'message-success' - $('#message-bar').addClass 'message-fail' - val = $('#message-bar').html data - @options.onFailure(data) if @options.onFailure? - val - - # Renders GFM for elements with 'markdown' class - renderGFM: (data = '') -> - $('.markdown').each (index) -> - $(this).html(marked($(this).html())) - -window.SwaggerUi = SwaggerUi diff --git a/src/main/coffeescript/view/MainView.coffee b/src/main/coffeescript/view/MainView.coffee deleted file mode 100644 index 007787c0..00000000 --- a/src/main/coffeescript/view/MainView.coffee +++ /dev/null @@ -1,75 +0,0 @@ -class MainView extends Backbone.View - sorters = { - 'alpha' : (a,b) -> return a.path.localeCompare(b.path), - 'method' : (a,b) -> return a.method.localeCompare(b.method), - } - - initialize: (opts={}) -> - # set up the UI for input - @model.auths = [] - for key, value of @model.securityDefinitions - auth = {name: key, type: value.type, value: value} - @model.auths.push auth - - if @model.swaggerVersion is "2.0" - if "validatorUrl" of opts.swaggerOptions - # Validator URL specified explicitly - @model.validatorUrl = opts.swaggerOptions.validatorUrl - else if @model.url.indexOf("localhost") > 0 - # Localhost override - @model.validatorUrl = null - else - # Default validator - @model.validatorUrl = "http://online.swagger.io/validator" - - render: -> - if @model.securityDefinitions - for name of @model.securityDefinitions - auth = @model.securityDefinitions[name] - if auth.type is "apiKey" and $("#apikey_button").length is 0 - button = new ApiKeyButton({model: auth}).render().el - $('.auth_main_container').append button - if auth.type is "basicAuth" and $("#basic_auth_button").length is 0 - button = new BasicAuthButton({model: auth}).render().el - $('.auth_main_container').append button - - # Render the outer container for resources - $(@el).html(Handlebars.templates.main(@model)) - - # Render each resource - - resources = {} - counter = 0 - for resource in @model.apisArray - id = resource.name - while typeof resources[id] isnt 'undefined' - id = id + "_" + counter - counter += 1 - resource.id = id - resources[id] = resource - @addResource resource, @model.auths - - $('.propWrap').hover( - -> - $('.optionsWrapper', $(this)).show() - ,-> - $('.optionsWrapper', $(this)).hide() - ) - @ - - addResource: (resource, auths) -> - # Render a resource and add it to resources li - resource.id = resource.id.replace(/\s/g, '_') - resourceView = new ResourceView({ - model: resource, - tagName: 'li', - id: 'resource_' + resource.id, - className: 'resource', - auths: auths, - swaggerOptions: @options.swaggerOptions, - parent: @ - }) - $('#resources', @el).append resourceView.render().el - - clear: -> - $(@el).html '' diff --git a/src/main/coffeescript/view/OperationView.coffee b/src/main/coffeescript/view/OperationView.coffee deleted file mode 100644 index 9827e92b..00000000 --- a/src/main/coffeescript/view/OperationView.coffee +++ /dev/null @@ -1,464 +0,0 @@ -class OperationView extends Backbone.View - invocationUrl: null - - events: { - 'submit .sandbox' : 'submitOperation' - 'click .submit' : 'submitOperation' - 'click .response_hider' : 'hideResponse' - 'click .toggleOperation' : 'toggleOperationContent' - 'mouseenter .api-ic' : 'mouseEnter' - 'mouseout .api-ic' : 'mouseExit' - } - - initialize: (opts={}) -> - @auths = opts.auths - @parentId = @model.parentId - @nickname = @model.nickname - @ - - mouseEnter: (e) -> - elem = $(@el).find '.content' - x = e.pageX - y = e.pageY - scX = $(window).scrollLeft() - scY = $(window).scrollTop() - scMaxX = scX + $(window).width() - scMaxY = scY + $(window).height() - wd = elem.width() - hgh = elem.height() - - if (x + wd > scMaxX) - x = scMaxX - wd - if (x < scX) - x = scX - if (y + hgh > scMaxY) - y = scMaxY - hgh - if (y < scY) - y = scY - pos = {} - pos.top = y - pos.left = x - elem.css(pos) - $(e.currentTarget.parentNode).find('#api_information_panel').show() - - mouseExit: (e) -> - $(e.currentTarget.parentNode).find('#api_information_panel').hide() - - render: -> - isMethodSubmissionSupported = jQuery.inArray(@model.method, @model.supportedSubmitMethods()) >= 0 - @model.isReadOnly = true unless isMethodSubmissionSupported - - # 1.2 syntax for description was `notes` - @model.description = (@model.description || @model.notes) - if @model.description - @model.description = @model.description.replace(/(?:\r\n|\r|\n)/g, '
') - @model.oauth = null - modelAuths = @model.authorizations || @model.security - if modelAuths - if Array.isArray modelAuths - for auths in modelAuths - for key, auth of auths - for a of @auths - auth = @auths[a] - if auth.type == 'oauth2' - @model.oauth = {} - @model.oauth.scopes = [] - for k, v of auth.value.scopes - scopeIndex = auths[key].indexOf k - if scopeIndex >= 0 - o = {scope: k, description: v} - @model.oauth.scopes.push o - else - for k, v of modelAuths - if k == "oauth2" - if @model.oauth == null - @model.oauth = {} - if @model.oauth.scopes is undefined - @model.oauth.scopes = [] - for o in v - @model.oauth.scopes.push o - - if typeof @model.responses isnt 'undefined' - @model.responseMessages = [] - for code, value of @model.responses - schema = null - schemaObj = @model.responses[code].schema - if schemaObj and schemaObj['$ref'] - schema = schemaObj['$ref'] - if schema.indexOf('#/definitions/') is 0 - schema = schema.substring('#/definitions/'.length) - @model.responseMessages.push {code: code, message: value.description, responseModel: schema } - - if typeof @model.responseMessages is 'undefined' - @model.responseMessages = [] - - # 2.0 - signatureModel = null - if @model.successResponse - successResponse = @model.successResponse - for key of successResponse - value = successResponse[key] - @model.successCode = key - if typeof value is 'object' and typeof value.createJSONSample is 'function' - signatureModel = - sampleJSON: JSON.stringify(value.createJSONSample(), undefined, 2) - isParam: false - signature: value.getMockSignature() - # 1.2 - else if @model.responseClassSignature and @model.responseClassSignature != 'string' - signatureModel = - sampleJSON: @model.responseSampleJSON - isParam: false - signature: @model.responseClassSignature - - - $(@el).html(Handlebars.templates.operation(@model)) - - if signatureModel - responseSignatureView = new SignatureView({model: signatureModel, tagName: 'div', parent: @}) - $('.model-signature', $(@el)).append responseSignatureView.render().el - else - @model.responseClassSignature = 'string' - $('.model-signature', $(@el)).html(@model.type) - - contentTypeModel = - isParam: false - - contentTypeModel.consumes = @model.consumes - contentTypeModel.produces = @model.produces - - for param in @model.parameters - type = param.type || param.dataType || '' - if typeof type is 'undefined' - schema = param.schema - if schema and schema['$ref'] - ref = schema['$ref'] - if ref.indexOf('#/definitions/') is 0 - type = ref.substring('#/definitions/'.length) - else - type = ref - if type and type.toLowerCase() == 'file' - if !contentTypeModel.consumes - contentTypeModel.consumes = 'multipart/form-data' - param.type = type - - responseContentTypeView = new ResponseContentTypeView({model: contentTypeModel, parent: @}) - $('.response-content-type', $(@el)).append responseContentTypeView.render().el - - # Render each parameter - @addParameter param, contentTypeModel.consumes for param in @model.parameters - - # Render each response code - @addStatusCode statusCode for statusCode in @model.responseMessages - - @ - - addParameter: (param, consumes) -> - # Render a parameter - param.consumes = consumes - paramView = new ParameterView({model: param, tagName: 'tr', readOnly: @model.isReadOnly, parent: @}) - $('.operation-params', $(@el)).append paramView.render().el - - addStatusCode: (statusCode) -> - # Render status codes - statusCodeView = new StatusCodeView({model: statusCode, tagName: 'tr', parent: @}) - $('.operation-status', $(@el)).append statusCodeView.render().el - - submitOperation: (e) -> - e?.preventDefault() - # Check for errors - form = $('.sandbox', $(@el)) - error_free = true - form.find("input.required").each -> - $(@).removeClass "error" - if jQuery.trim($(@).val()) is "" - $(@).addClass "error" - $(@).wiggle - callback: => $(@).focus() - error_free = false - form.find("textarea.required").each -> - $(@).removeClass "error" - if jQuery.trim($(@).val()) is "" - $(@).addClass "error" - $(@).wiggle - callback: => $(@).focus() - error_free = false - - # if error free submit it - if error_free - map = {} - opts = {parent: @} - - isFileUpload = false - - for o in form.find("input") - if(o.value? && jQuery.trim(o.value).length > 0) - map[o.name] = o.value - if o.type is "file" - map[o.name] = o.files[0] - isFileUpload = true - - for o in form.find("textarea") - if(o.value? && jQuery.trim(o.value).length > 0) - map[o.name] = o.value - - for o in form.find("select") - val = this.getSelectedValue o - if(val? && jQuery.trim(val).length > 0) - map[o.name] = val - - opts.responseContentType = $("div select[name=responseContentType]", $(@el)).val() - opts.requestContentType = $("div select[name=parameterContentType]", $(@el)).val() - - $(".response_throbber", $(@el)).show() - if isFileUpload - @handleFileUpload map, form - else - @model.do(map, opts, @showCompleteStatus, @showErrorStatus, @) - - success: (response, parent) -> - parent.showCompleteStatus response - - handleFileUpload: (map, form) -> - for o in form.serializeArray() - if(o.value? && jQuery.trim(o.value).length > 0) - map[o.name] = o.value - - # requires HTML5 compatible browser - bodyParam = new FormData() - params = 0 - - # add params - for param in @model.parameters - if param.paramType is 'form' or param.in is 'formData' - if param.type.toLowerCase() isnt 'file' and map[param.name] != undefined - bodyParam.append(param.name, map[param.name]) - - # headers in operation - headerParams = {} - for param in @model.parameters - if param.paramType is 'header' - headerParams[param.name] = map[param.name] - - # add files - for el in form.find('input[type~="file"]') - if typeof el.files[0] isnt 'undefined' - bodyParam.append($(el).attr('name'), el.files[0]) - params += 1 - - @invocationUrl = - if @model.supportHeaderParams() - headerParams = @model.getHeaderParams(map) - delete headerParams['Content-Type'] - @model.urlify(map, false) - else - @model.urlify(map, true) - - $(".request_url", $(@el)).html("
")
-    $(".request_url pre", $(@el)).text(@invocationUrl);
-
-    obj =
-      type: @model.method
-      url: @invocationUrl
-      headers: headerParams
-      data: bodyParam
-      dataType: 'json'
-      contentType: false
-      processData: false
-      error: (data, textStatus, error) =>
-        @showErrorStatus(@wrap(data), @)
-      success: (data) =>
-        @showResponse(data, @)
-      complete: (data) =>
-        @showCompleteStatus(@wrap(data), @)
-
-    # apply authorizations
-    if window.authorizations
-      window.authorizations.apply obj
-
-    if params is 0
-      obj.data.append("fake", "true");
-
-    jQuery.ajax(obj)
-    false
-    # end of file-upload nastiness
-
-  # wraps a jquery response as a shred response
-
-  wrap: (data) ->
-    headers = {}
-    headerArray = data.getAllResponseHeaders().split("\r")
-    for i in headerArray
-      h = i.match(/^([^:]*?):(.*)$/)
-      if(!h)
-        h = []
-      h.shift()
-      if (h[0] != undefined && h[1] != undefined)
-        headers[h[0].trim()] = h[1].trim()
-
-    o = {}
-    o.content = {}
-    o.content.data = data.responseText
-    o.headers = headers
-    o.request = {}
-    o.request.url = @invocationUrl
-    o.status = data.status
-    o
-
-  getSelectedValue: (select) ->
-    if !select.multiple
-      select.value
-    else
-      options = []
-      options.push opt.value for opt in select.options when opt.selected
-      if options.length > 0
-        options
-      else
-        null
-
-  # handler for hide response link
-  hideResponse: (e) ->
-    e?.preventDefault()
-    $(".response", $(@el)).slideUp()
-    $(".response_hider", $(@el)).fadeOut()
-
-
-  # Show response from server
-  showResponse: (response) ->
-    prettyJson = JSON.stringify(response, null, "\t").replace(/\n/g, "
") - $(".response_body", $(@el)).html escape(prettyJson) - - # Show error from server - showErrorStatus: (data, parent) -> - parent.showStatus data - - # show the status codes - showCompleteStatus: (data, parent) -> - parent.showStatus data - - # Adapted from http://stackoverflow.com/a/2893259/454004 - formatXml: (xml) -> - reg = /(>)(<)(\/*)/g - wsexp = /[ ]*(.*)[ ]+\n/g - contexp = /(<.+>)(.+\n)/g - xml = xml.replace(reg, '$1\n$2$3').replace(wsexp, '$1\n').replace(contexp, '$1\n$2') - pad = 0 - formatted = '' - lines = xml.split('\n') - indent = 0 - lastType = 'other' - # 4 types of tags - single, closing, opening, other (text, doctype, comment) - 4*4 = 16 transitions - transitions = - 'single->single': 0 - 'single->closing': -1 - 'single->opening': 0 - 'single->other': 0 - 'closing->single': 0 - 'closing->closing': -1 - 'closing->opening': 0 - 'closing->other': 0 - 'opening->single': 1 - 'opening->closing': 0 - 'opening->opening': 1 - 'opening->other': 1 - 'other->single': 0 - 'other->closing': -1 - 'other->opening': 0 - 'other->other': 0 - - for ln in lines - do (ln) -> - - types = - # is this line a single tag? ex.
- single: Boolean(ln.match(/<.+\/>/)) - # is this a closing tag? ex. - closing: Boolean(ln.match(/<\/.+>/)) - # is this even a tag (that's not ) - opening: Boolean(ln.match(/<[^!?].*>/)) - - [type] = (key for key, value of types when value) - type = if type is undefined then 'other' else type - - fromTo = lastType + '->' + type - lastType = type - padding = '' - - indent += transitions[fromTo] - padding = (' ' for j in [0...(indent)]).join('') - if fromTo == 'opening->closing' - #substr removes line break (\n) from prev loop - formatted = formatted.substr(0, formatted.length - 1) + ln + '\n' - else - formatted += padding + ln + '\n' - - formatted - - - # puts the response data in UI - showStatus: (response) -> - if response.content is undefined - content = response.data - url = response.url - else - content = response.content.data - url = response.request.url - headers = response.headers - - # if server is nice, and sends content-type back, we can use it - contentType = null - if headers - contentType = headers["Content-Type"] or headers["content-type"] - if contentType - contentType = contentType.split(";")[0].trim() - - $(".response_body", $(@el)).removeClass 'json' - $(".response_body", $(@el)).removeClass 'xml' - - supportsAudioPlayback = (contentType) -> - audioElement = document.createElement('audio') - return !!(audioElement.canPlayType && audioElement.canPlayType(contentType).replace(/no/, '')) - - if !content - code = $('').text("no content") - pre = $('
').append(code)
-    else if contentType is "application/json" || /\+json$/.test(contentType)
-      json = null
-      try
-        json = JSON.stringify(JSON.parse(content), null, "  ")
-      catch e
-        json = "can't parse JSON.  Raw result:\n\n" + content
-      code = $('').text(json)
-      pre = $('
').append(code)
-    else if contentType is "application/xml" || /\+xml$/.test(contentType)
-      code = $('').text(@formatXml(content))
-      pre = $('
').append(code)
-    else if contentType is "text/html"
-      code = $('').html(_.escape(content))
-      pre = $('
').append(code)
-    else if /^image\//.test(contentType)
-      pre = $('').attr('src',url)
-    else if /^audio\//.test(contentType) and supportsAudioPlayback(contentType)
-      pre = $('