diff --git a/src/main/kotlin/app/revanced/api/configuration/HTTP.kt b/src/main/kotlin/app/revanced/api/configuration/HTTP.kt index 523ea8e..27b3bbf 100644 --- a/src/main/kotlin/app/revanced/api/configuration/HTTP.kt +++ b/src/main/kotlin/app/revanced/api/configuration/HTTP.kt @@ -11,7 +11,7 @@ import org.koin.ktor.ext.get import kotlin.time.Duration.Companion.minutes fun Application.configureHTTP() { - val configurationRepository = get() + val configuration = get() install(CORS) { HttpMethod.DefaultMethods.minus(HttpMethod.Options).forEach(::allowMethod) @@ -22,7 +22,7 @@ fun Application.configureHTTP() { allowCredentials = true - configurationRepository.corsAllowedHosts.forEach { host -> + configuration.corsAllowedHosts.forEach { host -> allowHost(host = host, schemes = listOf("https")) } } diff --git a/src/main/kotlin/app/revanced/api/configuration/OpenAPI.kt b/src/main/kotlin/app/revanced/api/configuration/OpenAPI.kt index 3c90321..7aacc49 100644 --- a/src/main/kotlin/app/revanced/api/configuration/OpenAPI.kt +++ b/src/main/kotlin/app/revanced/api/configuration/OpenAPI.kt @@ -2,6 +2,7 @@ package app.revanced.api.configuration import app.revanced.api.command.applicationVersion 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.json.schema.KotlinXSchemaConfigurator 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.server.Server 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 org.koin.ktor.ext.get as koinGet internal fun Application.configureOpenAPI() { - val configurationRepository = get() + val configuration = koinGet() install(NotarizedApplication()) { + openApiJson = { + route("/${configuration.apiVersion}/openapi.json") { + get { + call.respond(application.attributes[KompendiumAttributes.openApiSpec]) + } + } + } spec = OpenApiSpec( info = Info( title = "ReVanced API", @@ -41,7 +51,7 @@ internal fun Application.configureOpenAPI() { ), ).apply { servers += Server( - url = URI(configurationRepository.endpoint), + url = URI(configuration.endpoint), description = "ReVanced API server", ) } diff --git a/src/main/kotlin/app/revanced/api/configuration/Routing.kt b/src/main/kotlin/app/revanced/api/configuration/Routing.kt index da1af7c..0b61529 100644 --- a/src/main/kotlin/app/revanced/api/configuration/Routing.kt +++ b/src/main/kotlin/app/revanced/api/configuration/Routing.kt @@ -52,6 +52,7 @@ internal fun Application.configureRouting() = routing { extensions("json", "asc") } - swagger(pageTitle = "ReVanced API", path = "/") - redoc(pageTitle = "ReVanced API", path = "/redoc") + val specUrl = "/${configuration.apiVersion}/openapi.json" + swagger(pageTitle = "ReVanced API", path = "/", specUrl = specUrl) + redoc(pageTitle = "ReVanced API", path = "/redoc", specUrl = specUrl) }