spring-web-modules/api/src/main/kotlin/com/cubetiqs/web/config/SpringDocConfig.kt

60 lines
1.8 KiB
Kotlin

package com.cubetiqs.web.config
import io.swagger.v3.oas.models.ExternalDocumentation
import io.swagger.v3.oas.models.OpenAPI
import io.swagger.v3.oas.models.info.Info
import io.swagger.v3.oas.models.info.License
import org.springdoc.core.GroupedOpenApi
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
@Configuration
class SpringDocConfig {
companion object {
private val PUBLIC_API_PATH get() = "/public/**"
private val ADMIN_API_PATH get() = "/admin/**"
private val DEFAULT_API_PATH get() = "/**"
}
@Bean
fun defaultApi(): GroupedOpenApi {
return GroupedOpenApi.builder()
.group("default-api")
.pathsToMatch(DEFAULT_API_PATH)
.pathsToExclude("/error", PUBLIC_API_PATH, ADMIN_API_PATH)
.packagesToScan("com.cubetiqs.web")
.build()
}
@Bean
fun publicApi(): GroupedOpenApi {
return GroupedOpenApi.builder()
.group("public-api")
.pathsToMatch(PUBLIC_API_PATH)
.build()
}
@Bean
fun adminApi(): GroupedOpenApi {
return GroupedOpenApi.builder()
.group("admin-api")
.pathsToMatch(ADMIN_API_PATH)
.build()
}
@Bean
fun cubetiqOpenAPI(): OpenAPI {
return OpenAPI()
.info(
Info().title("CUBETIQ Web API")
.description("CUBETIQ Spring Web API Application")
.version("v0.0.1")
.license(License().name("Apache 2.0").url("https://cubetiqs.com"))
)
.externalDocs(
ExternalDocumentation()
.description("CUBETIQ Web Wiki Documentation")
.url("https://cubetiqs.com")
)
}
}