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

io.javalin.plugin.openapi.ui.SwaggerRenderer.kt Maven / Gradle / Ivy

The newest version!
package io.javalin.plugin.openapi.ui

import io.javalin.core.util.OptionalDependency
import io.javalin.core.util.Util
import io.javalin.http.Context
import io.javalin.http.Handler
import io.javalin.plugin.openapi.OpenApiOptions
import io.javalin.plugin.openapi.annotations.OpenApi
import org.intellij.lang.annotations.Language

class SwaggerOptions(path: String) : OpenApiUiOptions(path) {
    override val defaultTitle = "Swagger UI"
}

internal class SwaggerRenderer(private val openApiOptions: OpenApiOptions) : Handler {
    @OpenApi(ignore = true)
    override fun handle(ctx: Context) {
        val swaggerUiOptions = openApiOptions.swagger!!
        val docsPath = openApiOptions.getFullDocumentationUrl(ctx)
        ctx.html(createSwaggerUiHtml(ctx, docsPath, swaggerUiOptions))
    }
}

private fun createSwaggerUiHtml(ctx: Context, docsPath: String, options: SwaggerOptions): String {
    val publicBasePath = Util.getWebjarPublicPath(ctx, OptionalDependency.SWAGGERUI)

    @Language("html")
    val html = """
        
        
        
            
                
                ${options.createTitle()}
                
                
                
                
            
            
                
""".trimIndent() return html }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy