fix: bumped swagger version + minor playground fix (#191)

This commit is contained in:
Ryan Brink
2022-02-10 08:34:02 -05:00
committed by GitHub
parent 21928ba53a
commit 52a425a5d2
12 changed files with 82 additions and 19 deletions

View File

@ -2,6 +2,17 @@
## Unreleased ## Unreleased
### Added
### Changed
### Remove
---
## Released
## [2.0.4] - February 10th, 2022
### Added ### Added
- Custom Type example to playground - Custom Type example to playground
@ -9,12 +20,7 @@
- Cleaned up and broke out handlers into separate classes - Cleaned up and broke out handlers into separate classes
- Serializer cleanup - Serializer cleanup
- Tests now run against Jackson, Gson and kotlinx on every run - Tests now run against Jackson, Gson and kotlinx on every run
- Swagger UI bumped from v3 to v4
### Remove
---
## Released
## [2.0.3] - February 7th, 2022 ## [2.0.3] - February 7th, 2022
### Changed ### Changed

View File

@ -1,5 +1,5 @@
# Kompendium # Kompendium
project.version=2.0.3 project.version=2.0.4
# Kotlin # Kotlin
kotlin.code.style=official kotlin.code.style=official
# Gradle # Gradle

View File

@ -36,7 +36,7 @@ fun Routing.swagger(pageTitle: String = "Docs", specUrl: String = "/openapi.json
content = "width=device-width, initial-scale=1" content = "width=device-width, initial-scale=1"
} }
link { link {
href = "https://unpkg.com/swagger-ui-dist@3.12.1/swagger-ui.css" href = "https://unpkg.com/swagger-ui-dist@4.5.0/swagger-ui.css"
rel = "stylesheet" rel = "stylesheet"
} }
} }
@ -45,10 +45,10 @@ fun Routing.swagger(pageTitle: String = "Docs", specUrl: String = "/openapi.json
id = "swagger-ui" id = "swagger-ui"
} }
script { script {
src = "https://unpkg.com/swagger-ui-dist@3.12.1/swagger-ui-standalone-preset.js" src = "https://unpkg.com/swagger-ui-dist@4.5.0/swagger-ui-standalone-preset.js"
} }
script { script {
src = "https://unpkg.com/swagger-ui-dist@3.12.1/swagger-ui-bundle.js" src = "https://unpkg.com/swagger-ui-dist@4.5.0/swagger-ui-bundle.js"
} }
unsafe { unsafe {
+""" +"""

View File

@ -7,6 +7,7 @@ import io.bkbn.kompendium.core.Notarized.notarizedGet
import io.bkbn.kompendium.core.metadata.ResponseInfo import io.bkbn.kompendium.core.metadata.ResponseInfo
import io.bkbn.kompendium.core.metadata.method.GetInfo import io.bkbn.kompendium.core.metadata.method.GetInfo
import io.bkbn.kompendium.core.routes.redoc import io.bkbn.kompendium.core.routes.redoc
import io.bkbn.kompendium.oas.serialization.KompendiumSerializersModule
import io.bkbn.kompendium.playground.AuthPlaygroundToC.simpleAuthenticatedGet import io.bkbn.kompendium.playground.AuthPlaygroundToC.simpleAuthenticatedGet
import io.bkbn.kompendium.playground.util.Util import io.bkbn.kompendium.playground.util.Util
import io.ktor.application.Application import io.ktor.application.Application
@ -23,6 +24,7 @@ import io.ktor.serialization.json
import io.ktor.server.engine.embeddedServer import io.ktor.server.engine.embeddedServer
import io.ktor.server.netty.Netty import io.ktor.server.netty.Netty
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
/** /**
* Application entrypoint. Run this and head on over to `localhost:8081/docs` * Application entrypoint. Run this and head on over to `localhost:8081/docs`
@ -39,7 +41,11 @@ fun main() {
// Application Module // Application Module
private fun Application.mainModule() { private fun Application.mainModule() {
install(ContentNegotiation) { install(ContentNegotiation) {
json() json(Json {
serializersModule = KompendiumSerializersModule.module
encodeDefaults = true
explicitNulls = false
})
} }
install(Kompendium) { install(Kompendium) {
spec = Util.baseSpec spec = Util.baseSpec

View File

@ -15,6 +15,8 @@ import io.bkbn.kompendium.core.metadata.method.DeleteInfo
import io.bkbn.kompendium.core.metadata.method.GetInfo import io.bkbn.kompendium.core.metadata.method.GetInfo
import io.bkbn.kompendium.core.metadata.method.PostInfo import io.bkbn.kompendium.core.metadata.method.PostInfo
import io.bkbn.kompendium.core.routes.redoc import io.bkbn.kompendium.core.routes.redoc
import io.bkbn.kompendium.core.routes.swagger
import io.bkbn.kompendium.oas.serialization.KompendiumSerializersModule
import io.bkbn.kompendium.playground.BasicModels.BasicParameters import io.bkbn.kompendium.playground.BasicModels.BasicParameters
import io.bkbn.kompendium.playground.BasicModels.BasicRequest import io.bkbn.kompendium.playground.BasicModels.BasicRequest
import io.bkbn.kompendium.playground.BasicModels.BasicResponse import io.bkbn.kompendium.playground.BasicModels.BasicResponse
@ -37,6 +39,7 @@ import io.ktor.server.engine.embeddedServer
import io.ktor.server.netty.Netty import io.ktor.server.netty.Netty
import kotlinx.serialization.SerialName import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import java.util.UUID import java.util.UUID
/** /**
@ -55,7 +58,11 @@ fun main() {
private fun Application.mainModule() { private fun Application.mainModule() {
// Installs Simple JSON Content Negotiation // Installs Simple JSON Content Negotiation
install(ContentNegotiation) { install(ContentNegotiation) {
json() json(Json {
serializersModule = KompendiumSerializersModule.module
encodeDefaults = true
explicitNulls = false
})
} }
// Installs the Kompendium Plugin and sets up baseline server metadata // Installs the Kompendium Plugin and sets up baseline server metadata
install(Kompendium) { install(Kompendium) {
@ -66,6 +73,8 @@ private fun Application.mainModule() {
// This adds ReDoc support at the `/docs` endpoint. // This adds ReDoc support at the `/docs` endpoint.
// By default, it will point at the `/openapi.json` created by Kompendium // By default, it will point at the `/openapi.json` created by Kompendium
redoc(pageTitle = "Simple API Docs") redoc(pageTitle = "Simple API Docs")
// You can also use swagger!
swagger(pageTitle = "Swaggerlicious")
// Kompendium infers the route path from the Ktor Route. This will show up as the root path `/` // Kompendium infers the route path from the Ktor Route. This will show up as the root path `/`
notarizedGet(simpleGetExample) { notarizedGet(simpleGetExample) {
call.respond(HttpStatusCode.OK, BasicResponse(c = UUID.randomUUID().toString())) call.respond(HttpStatusCode.OK, BasicResponse(c = UUID.randomUUID().toString()))

View File

@ -23,6 +23,7 @@ import io.bkbn.kompendium.core.metadata.ResponseInfo
import io.bkbn.kompendium.core.metadata.method.GetInfo import io.bkbn.kompendium.core.metadata.method.GetInfo
import io.bkbn.kompendium.core.metadata.method.PostInfo import io.bkbn.kompendium.core.metadata.method.PostInfo
import io.bkbn.kompendium.core.routes.redoc import io.bkbn.kompendium.core.routes.redoc
import io.bkbn.kompendium.oas.serialization.KompendiumSerializersModule
import io.bkbn.kompendium.playground.ConstrainedModels.ConstrainedParams import io.bkbn.kompendium.playground.ConstrainedModels.ConstrainedParams
import io.bkbn.kompendium.playground.ConstrainedModels.ConstrainedRequest import io.bkbn.kompendium.playground.ConstrainedModels.ConstrainedRequest
import io.bkbn.kompendium.playground.ConstrainedModels.ConstrainedResponse import io.bkbn.kompendium.playground.ConstrainedModels.ConstrainedResponse
@ -40,6 +41,7 @@ import io.ktor.serialization.json
import io.ktor.server.engine.embeddedServer import io.ktor.server.engine.embeddedServer
import io.ktor.server.netty.Netty import io.ktor.server.netty.Netty
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonElement
fun main() { fun main() {
@ -54,7 +56,11 @@ fun main() {
private fun Application.mainModule() { private fun Application.mainModule() {
// Installs Simple JSON Content Negotiation // Installs Simple JSON Content Negotiation
install(ContentNegotiation) { install(ContentNegotiation) {
json() json(Json {
serializersModule = KompendiumSerializersModule.module
encodeDefaults = true
explicitNulls = false
})
} }
// Installs the Kompendium Plugin and sets up baseline server metadata // Installs the Kompendium Plugin and sets up baseline server metadata
install(Kompendium) { install(Kompendium) {

View File

@ -6,6 +6,7 @@ import io.bkbn.kompendium.core.metadata.ExceptionInfo
import io.bkbn.kompendium.core.metadata.ResponseInfo import io.bkbn.kompendium.core.metadata.ResponseInfo
import io.bkbn.kompendium.core.metadata.method.GetInfo import io.bkbn.kompendium.core.metadata.method.GetInfo
import io.bkbn.kompendium.core.routes.redoc import io.bkbn.kompendium.core.routes.redoc
import io.bkbn.kompendium.oas.serialization.KompendiumSerializersModule
import io.bkbn.kompendium.playground.ExceptionPlaygroundToC.simpleGetExample import io.bkbn.kompendium.playground.ExceptionPlaygroundToC.simpleGetExample
import io.bkbn.kompendium.playground.util.Util import io.bkbn.kompendium.playground.util.Util
import io.ktor.application.Application import io.ktor.application.Application
@ -21,6 +22,7 @@ import io.ktor.server.engine.embeddedServer
import io.ktor.server.netty.Netty import io.ktor.server.netty.Netty
import kotlin.reflect.typeOf import kotlin.reflect.typeOf
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import java.time.LocalDateTime import java.time.LocalDateTime
// Application Entrypoint // Application Entrypoint
@ -36,7 +38,11 @@ fun main() {
private fun Application.mainModule() { private fun Application.mainModule() {
// Installs Simple JSON Content Negotiation // Installs Simple JSON Content Negotiation
install(ContentNegotiation) { install(ContentNegotiation) {
json() json(Json {
serializersModule = KompendiumSerializersModule.module
encodeDefaults = true
explicitNulls = false
})
} }
// Installs the Kompendium Plugin and sets up baseline server metadata // Installs the Kompendium Plugin and sets up baseline server metadata
install(Kompendium) { install(Kompendium) {

View File

@ -5,6 +5,7 @@ import io.bkbn.kompendium.core.Notarized.notarizedGet
import io.bkbn.kompendium.core.metadata.ResponseInfo import io.bkbn.kompendium.core.metadata.ResponseInfo
import io.bkbn.kompendium.core.metadata.method.GetInfo import io.bkbn.kompendium.core.metadata.method.GetInfo
import io.bkbn.kompendium.core.routes.redoc import io.bkbn.kompendium.core.routes.redoc
import io.bkbn.kompendium.oas.serialization.KompendiumSerializersModule
import io.bkbn.kompendium.playground.GenericPlaygroundToC.simpleGenericGet import io.bkbn.kompendium.playground.GenericPlaygroundToC.simpleGenericGet
import io.bkbn.kompendium.playground.util.Util import io.bkbn.kompendium.playground.util.Util
import io.ktor.application.Application import io.ktor.application.Application
@ -18,6 +19,7 @@ import io.ktor.serialization.json
import io.ktor.server.engine.embeddedServer import io.ktor.server.engine.embeddedServer
import io.ktor.server.netty.Netty import io.ktor.server.netty.Netty
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
/** /**
* Application entrypoint. Run this and head on over to `localhost:8081/docs` * Application entrypoint. Run this and head on over to `localhost:8081/docs`
@ -35,7 +37,11 @@ fun main() {
private fun Application.mainModule() { private fun Application.mainModule() {
// Installs Simple JSON Content Negotiation // Installs Simple JSON Content Negotiation
install(ContentNegotiation) { install(ContentNegotiation) {
json() json(Json {
serializersModule = KompendiumSerializersModule.module
encodeDefaults = true
explicitNulls = false
})
} }
// Installs the Kompendium Plugin and sets up baseline server metadata // Installs the Kompendium Plugin and sets up baseline server metadata
install(Kompendium) { install(Kompendium) {

View File

@ -7,6 +7,7 @@ import io.bkbn.kompendium.core.metadata.ResponseInfo
import io.bkbn.kompendium.core.metadata.method.GetInfo import io.bkbn.kompendium.core.metadata.method.GetInfo
import io.bkbn.kompendium.core.routes.redoc import io.bkbn.kompendium.core.routes.redoc
import io.bkbn.kompendium.locations.NotarizedLocation.notarizedGet import io.bkbn.kompendium.locations.NotarizedLocation.notarizedGet
import io.bkbn.kompendium.oas.serialization.KompendiumSerializersModule
import io.bkbn.kompendium.playground.LocationsToC.ohBoiUCrazy import io.bkbn.kompendium.playground.LocationsToC.ohBoiUCrazy
import io.bkbn.kompendium.playground.LocationsToC.testLocation import io.bkbn.kompendium.playground.LocationsToC.testLocation
import io.bkbn.kompendium.playground.LocationsToC.testNestLocation import io.bkbn.kompendium.playground.LocationsToC.testNestLocation
@ -24,6 +25,7 @@ import io.ktor.serialization.json
import io.ktor.server.engine.embeddedServer import io.ktor.server.engine.embeddedServer
import io.ktor.server.netty.Netty import io.ktor.server.netty.Netty
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
/** /**
* Application entrypoint. Run this and head on over to `localhost:8081/docs` * Application entrypoint. Run this and head on over to `localhost:8081/docs`
@ -39,7 +41,11 @@ fun main() {
private fun Application.mainModule() { private fun Application.mainModule() {
install(ContentNegotiation) { install(ContentNegotiation) {
json() json(Json {
serializersModule = KompendiumSerializersModule.module
encodeDefaults = true
explicitNulls = false
})
} }
install(Kompendium) { install(Kompendium) {
spec = Util.baseSpec spec = Util.baseSpec

View File

@ -5,6 +5,7 @@ import io.bkbn.kompendium.core.Notarized.notarizedGet
import io.bkbn.kompendium.core.metadata.ResponseInfo import io.bkbn.kompendium.core.metadata.ResponseInfo
import io.bkbn.kompendium.core.metadata.method.GetInfo import io.bkbn.kompendium.core.metadata.method.GetInfo
import io.bkbn.kompendium.core.routes.redoc import io.bkbn.kompendium.core.routes.redoc
import io.bkbn.kompendium.oas.serialization.KompendiumSerializersModule
import io.bkbn.kompendium.playground.PolymorphicPlaygroundToC.polymorphicExample import io.bkbn.kompendium.playground.PolymorphicPlaygroundToC.polymorphicExample
import io.bkbn.kompendium.playground.util.Util import io.bkbn.kompendium.playground.util.Util
import io.ktor.application.Application import io.ktor.application.Application
@ -18,6 +19,7 @@ import io.ktor.serialization.json
import io.ktor.server.engine.embeddedServer import io.ktor.server.engine.embeddedServer
import io.ktor.server.netty.Netty import io.ktor.server.netty.Netty
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
/** /**
* Application entrypoint. Run this and head on over to `localhost:8081/docs` * Application entrypoint. Run this and head on over to `localhost:8081/docs`
@ -34,7 +36,11 @@ fun main() {
private fun Application.mainModule() { private fun Application.mainModule() {
// Installs Simple JSON Content Negotiation // Installs Simple JSON Content Negotiation
install(ContentNegotiation) { install(ContentNegotiation) {
json() json(Json {
serializersModule = KompendiumSerializersModule.module
encodeDefaults = true
explicitNulls = false
})
} }
// Installs the Kompendium Plugin and sets up baseline server metadata // Installs the Kompendium Plugin and sets up baseline server metadata
install(Kompendium) { install(Kompendium) {

View File

@ -6,6 +6,7 @@ import io.bkbn.kompendium.core.Notarized.notarizedGet
import io.bkbn.kompendium.core.metadata.ResponseInfo import io.bkbn.kompendium.core.metadata.ResponseInfo
import io.bkbn.kompendium.core.metadata.method.GetInfo import io.bkbn.kompendium.core.metadata.method.GetInfo
import io.bkbn.kompendium.core.routes.redoc import io.bkbn.kompendium.core.routes.redoc
import io.bkbn.kompendium.oas.serialization.KompendiumSerializersModule
import io.bkbn.kompendium.playground.util.Util import io.bkbn.kompendium.playground.util.Util
import io.ktor.application.Application import io.ktor.application.Application
import io.ktor.application.call import io.ktor.application.call
@ -19,6 +20,7 @@ import io.ktor.serialization.json
import io.ktor.server.engine.embeddedServer import io.ktor.server.engine.embeddedServer
import io.ktor.server.netty.Netty import io.ktor.server.netty.Netty
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
enum class ColumnMode { enum class ColumnMode {
NULLABLE, NULLABLE,
@ -58,7 +60,11 @@ fun main() {
private fun Application.mainModule() { private fun Application.mainModule() {
install(ContentNegotiation) { install(ContentNegotiation) {
json() json(Json {
serializersModule = KompendiumSerializersModule.module
encodeDefaults = true
explicitNulls = false
})
} }
install(Kompendium) { install(Kompendium) {
spec = Util.baseSpec spec = Util.baseSpec

View File

@ -3,6 +3,7 @@ package io.bkbn.kompendium.playground
import io.bkbn.kompendium.core.Kompendium import io.bkbn.kompendium.core.Kompendium
import io.bkbn.kompendium.core.Notarized.notarizedGet import io.bkbn.kompendium.core.Notarized.notarizedGet
import io.bkbn.kompendium.core.routes.swagger import io.bkbn.kompendium.core.routes.swagger
import io.bkbn.kompendium.oas.serialization.KompendiumSerializersModule
import io.bkbn.kompendium.playground.util.Util import io.bkbn.kompendium.playground.util.Util
import io.ktor.application.Application import io.ktor.application.Application
import io.ktor.application.call import io.ktor.application.call
@ -15,6 +16,7 @@ import io.ktor.serialization.json
import io.ktor.server.engine.embeddedServer import io.ktor.server.engine.embeddedServer
import io.ktor.server.netty.Netty import io.ktor.server.netty.Netty
import io.ktor.webjars.Webjars import io.ktor.webjars.Webjars
import kotlinx.serialization.json.Json
import java.util.UUID import java.util.UUID
/** /**
@ -33,7 +35,11 @@ fun main() {
private fun Application.mainModule() { private fun Application.mainModule() {
// Installs Simple JSON Content Negotiation // Installs Simple JSON Content Negotiation
install(ContentNegotiation) { install(ContentNegotiation) {
json() json(Json {
serializersModule = KompendiumSerializersModule.module
encodeDefaults = true
explicitNulls = false
})
} }
install(Webjars) install(Webjars)
// Installs the Kompendium Plugin and sets up baseline server metadata // Installs the Kompendium Plugin and sets up baseline server metadata