
com.reprezen.genflow.rapidml.doc.xtend.XGenerateSecuritySchemes.xtend Maven / Gradle / Ivy
/*******************************************************************************
* 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.rapidml.doc.xtend
import com.reprezen.genflow.common.doc.XDocHelper
import com.reprezen.genflow.common.services.MethodServices
import com.reprezen.genflow.common.xtend.XImportHelper
import com.reprezen.genflow.common.xtend.XParameterHelper
import com.reprezen.genflow.common.xtend.XSecuritySchemeImportHelper
import com.reprezen.rapidml.SecurityScheme
import com.reprezen.rapidml.SecuritySchemeLibrary
import com.reprezen.rapidml.TypedResponse
import com.reprezen.rapidml.ZenModel
class XGenerateSecuritySchemes {
extension XDocHelper docHelper
val paramHelper = new XParameterHelper
val XImportHelper importHelper
val XSecuritySchemeImportHelper securitySchemeImportHelper
new(XImportHelper importHelper, XSecuritySchemeImportHelper securitySchemeImportHelper, XDocHelper docHelper) {
this.importHelper = importHelper
this.securitySchemeImportHelper = securitySchemeImportHelper
this.docHelper = docHelper
}
def String generateSecuritySchemes(ZenModel model) {
'''
«IF model.securitySchemesLibrary !== null»
«model.securitySchemesLibrary.name»
«FOR securityScheme : model.securitySchemesLibrary.securitySchemes»
«generateSecurityScheme(securityScheme)»
«ENDFOR»
«ENDIF»
«FOR schemeModel : securitySchemeImportHelper.importedTypes.keySet»
«generateImportedSecuritySchemes(schemeModel)»
«ENDFOR»
'''
}
def protected generateSecurityScheme(SecurityScheme securityScheme) {
'''
«securityScheme.name»
(«securityScheme.type»)
«securityScheme.generateDocItem»
Method Invocation
«IF !securityScheme.parameters.empty»
-
«XDocHelper.tableWithHeader("Authorization Parameters", "Name", "Location", "Type", "Documentation")»
«FOR param : securityScheme.parameters»
«param.name»
«param.type.toString»
«paramHelper.paramType(param.sourceReference, importHelper)»
«param?.generateDoc»
«ENDFOR»
«ENDIF»
«IF !securityScheme.errorResponses.empty»
-
«XDocHelper.tableWithHeader("Error Responses", "Code", "Description", "Documentation")»
«FOR response : securityScheme.errorResponses»
«generateErrorResponse(response)»
«ENDFOR»
«ENDIF»
«IF !securityScheme.scopes.empty»
«XDocHelper.tableWithHeader("Defined Scopes", "Name", "Documentation")»
«FOR scope : securityScheme.scopes»
«scope.name»
«scope.documentation?.text»
«ENDFOR»
«ENDIF»
«IF !securityScheme.settings.empty»
«XDocHelper.tableWithHeader("Settings", "Name", "Documentation", "Value")»
«FOR setting : securityScheme.settings»
«setting.name»
«setting.documentation?.text»
«setting.value»
«ENDFOR»
«ENDIF»
'''
}
def private generateErrorResponse(TypedResponse response) {
'''
Error Response
«response.statusCode»
«MethodServices.getResponseStatusCodeDescription(response.statusCode)»
«response.generateDoc»
'''
}
def private generateImportedSecuritySchemes(SecuritySchemeLibrary model) {
'''
«securitySchemeImportHelper.getModelQualifiedName(model)»
«FOR dataType : securitySchemeImportHelper.importedTypes.get(model)»
«generateSecurityScheme(dataType)»
«ENDFOR»
'''
}
def boolean hasSecuritySchemes(ZenModel model) {
val library = model.securitySchemesLibrary
if (library !== null) !library.securitySchemes.isEmpty else false
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy