All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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