
com.reprezen.genflow.swagger.doc.OpDoc.xtend Maven / Gradle / Ivy
The newest version!
/*******************************************************************************
* Copyright © 2013, 2016 Modelsolv, Inc.
* All Rights Reserved.
*
* NOTICE: All information contained herein is, and remains the property
* of ModelSolv, Inc. See the file license.html in the root directory of
* this project for further information.
*******************************************************************************/
package com.reprezen.genflow.swagger.doc
import io.swagger.models.HttpMethod
import io.swagger.models.Operation
import io.swagger.models.Response
import io.swagger.models.parameters.BodyParameter
class OpDoc {
val Operation op
extension DocHelper = HelperHelper.docHelper
extension TagHelper = HelperHelper.tagHelper
extension SchemaHelper = HelperHelper.schemaHelper
extension ResponseHelper = HelperHelper.responseHelper
extension HtmlHelper = HelperHelper.htmlHelper
extension MiscHelper = HelperHelper.miscHelper
extension OptionHelper = HelperHelper.optionHelper
extension AttributeHelper = HelperHelper.attributeHelper
extension ExamplesHelper = HelperHelper.examplesHelper
new(Operation op) {
this.op = op;
}
def getHtml(HttpMethod method) {
'''
«method»
«op.operationId.deprecate(op.deprecated)»
«op.tagBadges»
«IF preview»
«ENDIF»
- «op.summary.getDocHtml(op.description)»
-
Media Types
Consumes «MimeTypeHelper.getHtml(op.consumes)»
Produces «MimeTypeHelper.getHtml(op.produces)»
«new ParamsDoc().paramsHtml(op.nonBodyParameters)»
«op.getMessageBodyHtml(method)»
'''
}
def getNonBodyParameters(Operation op) {
op.parameters?.filter[it.in != "body"].toList
}
def getBodyParameter(Operation op) {
op.parameters?.filter[it.in == "body"].last as BodyParameter
}
def getMessageBodyHtml(Operation op, HttpMethod method) {
return '''
«op.bodyParameter?.requestHtml»
«FOR code : op.responses.keySet.sortByPosition(op.responses)»«op.responses.get(code).getResponseHtml(code)»«ENDFOR»
'''
}
def getRequestHtml(BodyParameter bodyParam) {
'''
Request «chevron» «bodyParam.schema.schemaTitle»
«bodyParam.schema.renderSchema»
«bodyParam.examples.renderExamples»
'''
}
def getResponseHtml(Response response, String status) {
'''
Response «status.statusLabel» «chevron» «response.responseSchema?.schemaTitle»
«response.description?.docHtml»
«response.responseSchema?.renderSchema»
«response.responseHeaders»
«response.examples.renderExamples»
'''
}
def private getResponseHeaders(Response response) {
val html = response.getHeadersHtml
if (html !== null) {
'''
Headers
«html»
'''
}
}
def chevron() {
''
}
def statusLabel(String status) {
val context = try {
switch s: Integer.parseInt(status) {
case s >= 100 && s < 200: // Informational
"info"
case s >= 200 && s < 300: // Success
"success"
case s >= 300 && s < 400: // Redirection
"info"
case s >= 400 && s < 500: // Bad request
"danger"
case s >= 500 && s < 600: // server error
"danger"
default:
"default"
}
} catch (NumberFormatException e) {
status // handle "default" case
}
'''«status»'''
}
def deprecate(String text, Boolean deprecated) {
if (deprecated !== null && deprecated) '''«text»''' else text
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy