feat: Move spec url to versioned path

This commit is contained in:
oSumAtrIX 2024-11-06 05:30:00 +01:00
parent e22ec16e40
commit e871b23210
No known key found for this signature in database
GPG Key ID: A9B3094ACDB604B4
3 changed files with 18 additions and 7 deletions

View File

@ -11,7 +11,7 @@ import org.koin.ktor.ext.get
import kotlin.time.Duration.Companion.minutes import kotlin.time.Duration.Companion.minutes
fun Application.configureHTTP() { fun Application.configureHTTP() {
val configurationRepository = get<ConfigurationRepository>() val configuration = get<ConfigurationRepository>()
install(CORS) { install(CORS) {
HttpMethod.DefaultMethods.minus(HttpMethod.Options).forEach(::allowMethod) HttpMethod.DefaultMethods.minus(HttpMethod.Options).forEach(::allowMethod)
@ -22,7 +22,7 @@ fun Application.configureHTTP() {
allowCredentials = true allowCredentials = true
configurationRepository.corsAllowedHosts.forEach { host -> configuration.corsAllowedHosts.forEach { host ->
allowHost(host = host, schemes = listOf("https")) allowHost(host = host, schemes = listOf("https"))
} }
} }

View File

@ -2,6 +2,7 @@ package app.revanced.api.configuration
import app.revanced.api.command.applicationVersion import app.revanced.api.command.applicationVersion
import app.revanced.api.configuration.repository.ConfigurationRepository import app.revanced.api.configuration.repository.ConfigurationRepository
import io.bkbn.kompendium.core.attribute.KompendiumAttributes
import io.bkbn.kompendium.core.plugin.NotarizedApplication import io.bkbn.kompendium.core.plugin.NotarizedApplication
import io.bkbn.kompendium.json.schema.KotlinXSchemaConfigurator import io.bkbn.kompendium.json.schema.KotlinXSchemaConfigurator
import io.bkbn.kompendium.oas.OpenApiSpec import io.bkbn.kompendium.oas.OpenApiSpec
@ -12,13 +13,22 @@ import io.bkbn.kompendium.oas.info.License
import io.bkbn.kompendium.oas.security.BearerAuth import io.bkbn.kompendium.oas.security.BearerAuth
import io.bkbn.kompendium.oas.server.Server import io.bkbn.kompendium.oas.server.Server
import io.ktor.server.application.* import io.ktor.server.application.*
import org.koin.ktor.ext.get import io.ktor.server.response.*
import io.ktor.server.routing.*
import java.net.URI import java.net.URI
import org.koin.ktor.ext.get as koinGet
internal fun Application.configureOpenAPI() { internal fun Application.configureOpenAPI() {
val configurationRepository = get<ConfigurationRepository>() val configuration = koinGet<ConfigurationRepository>()
install(NotarizedApplication()) { install(NotarizedApplication()) {
openApiJson = {
route("/${configuration.apiVersion}/openapi.json") {
get {
call.respond(application.attributes[KompendiumAttributes.openApiSpec])
}
}
}
spec = OpenApiSpec( spec = OpenApiSpec(
info = Info( info = Info(
title = "ReVanced API", title = "ReVanced API",
@ -41,7 +51,7 @@ internal fun Application.configureOpenAPI() {
), ),
).apply { ).apply {
servers += Server( servers += Server(
url = URI(configurationRepository.endpoint), url = URI(configuration.endpoint),
description = "ReVanced API server", description = "ReVanced API server",
) )
} }

View File

@ -52,6 +52,7 @@ internal fun Application.configureRouting() = routing {
extensions("json", "asc") extensions("json", "asc")
} }
swagger(pageTitle = "ReVanced API", path = "/") val specUrl = "/${configuration.apiVersion}/openapi.json"
redoc(pageTitle = "ReVanced API", path = "/redoc") swagger(pageTitle = "ReVanced API", path = "/", specUrl = specUrl)
redoc(pageTitle = "ReVanced API", path = "/redoc", specUrl = specUrl)
} }