Use correct server url in OpenAPI spec

This commit is contained in:
oSumAtrIX 2024-07-01 01:09:05 +02:00
parent d9c6e521a6
commit d4b228faa7
No known key found for this signature in database
GPG Key ID: A9B3094ACDB604B4
5 changed files with 30 additions and 6 deletions

View File

@ -10,4 +10,5 @@ contributors-repositories = [
"revanced-manager",
]
api-version = 1
host = "*.revanced.app"
cors = { host = "*.revanced.app", sub-domains = [] }
endpoint = "https://api.revanced.app"

View File

@ -10,4 +10,5 @@ contributors-repositories = [
"revanced-manager",
]
api-version = 1
host = "*.revanced.app"
cors = { host = "*.127.0.0.1:8888", sub-domains = [] }
endpoint = "http://127.0.0.1:8888/"

View File

@ -12,7 +12,10 @@ fun Application.configureHTTP() {
val configurationRepository = get<ConfigurationRepository>()
install(CORS) {
allowHost(host = configurationRepository.host)
allowHost(
host = configurationRepository.cors.host,
subDomains = configurationRepository.cors.subDomains,
)
}
install(RateLimit) {

View File

@ -1,6 +1,7 @@
package app.revanced.api.configuration
import app.revanced.api.command.applicationVersion
import app.revanced.api.configuration.repository.ConfigurationRepository
import io.bkbn.kompendium.core.plugin.NotarizedApplication
import io.bkbn.kompendium.json.schema.KotlinXSchemaConfigurator
import io.bkbn.kompendium.oas.OpenApiSpec
@ -12,9 +13,12 @@ import io.bkbn.kompendium.oas.security.BasicAuth
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 java.net.URI
internal fun Application.configureOpenAPI() {
val configurationRepository = get<ConfigurationRepository>()
install(NotarizedApplication()) {
spec = OpenApiSpec(
info = Info(
@ -39,7 +43,7 @@ internal fun Application.configureOpenAPI() {
),
).apply {
servers += Server(
url = URI("https://api.revanced.app"),
url = URI(configurationRepository.endpoint),
description = "ReVanced API server",
)
}

View File

@ -19,7 +19,8 @@ import java.io.File
* @property integrations The source of the integrations.
* @property contributorsRepositoryNames The names of the repositories to get contributors from.
* @property apiVersion The version to use for the API.
* @property host The host of the API to configure CORS.
* @property cors The CORS configuration.
* @property endpoint The endpoint of the API.
*/
@Serializable
internal class ConfigurationRepository(
@ -30,7 +31,8 @@ internal class ConfigurationRepository(
val contributorsRepositoryNames: Set<String>,
@SerialName("api-version")
val apiVersion: Int = 1,
val host: String,
val cors: Cors,
val endpoint: String,
) {
/**
* An asset configuration.
@ -59,6 +61,19 @@ internal class ConfigurationRepository(
@SerialName("public-key-file")
val publicKeyFile: File,
)
/**
* The CORS configuration.
*
* @property host The host of the API to configure CORS.
* @property subDomains The subdomains to allow for CORS.
*/
@Serializable
internal class Cors(
val host: String,
@SerialName("sub-domains")
val subDomains: List<String>,
)
}
private object RegexSerializer : KSerializer<Regex> {