fix(kobo): prevent double URL encoding when proxying

Closes: #2130
This commit is contained in:
Jason 2025-11-10 23:52:32 -08:00 committed by GitHub
parent b925f3e19d
commit ce3ad4c1c7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -18,6 +18,7 @@ import org.springframework.util.LinkedMultiValueMap
import org.springframework.web.client.RestClient
import org.springframework.web.client.toEntity
import org.springframework.web.server.ResponseStatusException
import org.springframework.web.util.DefaultUriBuilderFactory
import kotlin.time.Duration.Companion.minutes
import kotlin.time.toJavaDuration
@ -29,11 +30,18 @@ class KoboProxy(
private val komgaSyncTokenGenerator: KomgaSyncTokenGenerator,
private val komgaSettingsProvider: KomgaSettingsProvider,
) {
private val koboApiClient =
private val koboApiClient: RestClient
init {
val uriBuilderFactory = DefaultUriBuilderFactory("https://storeapi.kobo.com")
uriBuilderFactory.setEncodingMode(DefaultUriBuilderFactory.EncodingMode.NONE)
koboApiClient =
RestClient
.builder()
.baseUrl("https://storeapi.kobo.com")
.requestFactory(
.uriBuilderFactory(
uriBuilderFactory,
).requestFactory(
ClientHttpRequestFactoryBuilder.reactor().build(
ClientHttpRequestFactorySettings
.defaults()
@ -41,6 +49,7 @@ class KoboProxy(
.withConnectTimeout(1.minutes.toJavaDuration()),
),
).build()
}
private val pathRegex = """\/kobo\/[-\w]*(.*)""".toRegex()