Skip to content

Commit e871b23

Browse files
committed
feat: Move spec url to versioned path
1 parent e22ec16 commit e871b23

File tree

3 files changed

+18
-7
lines changed

3 files changed

+18
-7
lines changed

src/main/kotlin/app/revanced/api/configuration/HTTP.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import org.koin.ktor.ext.get
1111
import kotlin.time.Duration.Companion.minutes
1212

1313
fun Application.configureHTTP() {
14-
val configurationRepository = get<ConfigurationRepository>()
14+
val configuration = get<ConfigurationRepository>()
1515

1616
install(CORS) {
1717
HttpMethod.DefaultMethods.minus(HttpMethod.Options).forEach(::allowMethod)
@@ -22,7 +22,7 @@ fun Application.configureHTTP() {
2222

2323
allowCredentials = true
2424

25-
configurationRepository.corsAllowedHosts.forEach { host ->
25+
configuration.corsAllowedHosts.forEach { host ->
2626
allowHost(host = host, schemes = listOf("https"))
2727
}
2828
}

src/main/kotlin/app/revanced/api/configuration/OpenAPI.kt

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package app.revanced.api.configuration
22

33
import app.revanced.api.command.applicationVersion
44
import app.revanced.api.configuration.repository.ConfigurationRepository
5+
import io.bkbn.kompendium.core.attribute.KompendiumAttributes
56
import io.bkbn.kompendium.core.plugin.NotarizedApplication
67
import io.bkbn.kompendium.json.schema.KotlinXSchemaConfigurator
78
import io.bkbn.kompendium.oas.OpenApiSpec
@@ -12,13 +13,22 @@ import io.bkbn.kompendium.oas.info.License
1213
import io.bkbn.kompendium.oas.security.BearerAuth
1314
import io.bkbn.kompendium.oas.server.Server
1415
import io.ktor.server.application.*
15-
import org.koin.ktor.ext.get
16+
import io.ktor.server.response.*
17+
import io.ktor.server.routing.*
1618
import java.net.URI
19+
import org.koin.ktor.ext.get as koinGet
1720

1821
internal fun Application.configureOpenAPI() {
19-
val configurationRepository = get<ConfigurationRepository>()
22+
val configuration = koinGet<ConfigurationRepository>()
2023

2124
install(NotarizedApplication()) {
25+
openApiJson = {
26+
route("/${configuration.apiVersion}/openapi.json") {
27+
get {
28+
call.respond(application.attributes[KompendiumAttributes.openApiSpec])
29+
}
30+
}
31+
}
2232
spec = OpenApiSpec(
2333
info = Info(
2434
title = "ReVanced API",
@@ -41,7 +51,7 @@ internal fun Application.configureOpenAPI() {
4151
),
4252
).apply {
4353
servers += Server(
44-
url = URI(configurationRepository.endpoint),
54+
url = URI(configuration.endpoint),
4555
description = "ReVanced API server",
4656
)
4757
}

src/main/kotlin/app/revanced/api/configuration/Routing.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ internal fun Application.configureRouting() = routing {
5252
extensions("json", "asc")
5353
}
5454

55-
swagger(pageTitle = "ReVanced API", path = "/")
56-
redoc(pageTitle = "ReVanced API", path = "/redoc")
55+
val specUrl = "/${configuration.apiVersion}/openapi.json"
56+
swagger(pageTitle = "ReVanced API", path = "/", specUrl = specUrl)
57+
redoc(pageTitle = "ReVanced API", path = "/redoc", specUrl = specUrl)
5758
}

0 commit comments

Comments
 (0)