Skip to content

Commit 21b789a

Browse files
authored
Merge pull request #106 from RADAR-base/fitbit-user-repository
Fix ServiceUserRepository issues
2 parents daaa278 + 4e6110e commit 21b789a

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

kafka-connect-fitbit-source/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ dependencies {
1717
implementation("io.ktor:ktor-client-content-negotiation:${Versions.ktor}")
1818
implementation("io.ktor:ktor-serialization-jackson:${Versions.ktor}")
1919
implementation("io.ktor:ktor-client-cio-jvm:${Versions.ktor}")
20+
implementation("io.ktor:ktor-serialization-kotlinx-json:${Versions.ktor}")
21+
implementation("com.fasterxml.jackson.module:jackson-module-kotlin:${Versions.jackson}")
2022

2123
// Included in connector runtime
2224
compileOnly("org.apache.kafka:connect-api:${Versions.kafka}")

kafka-connect-fitbit-source/src/main/java/org/radarbase/connect/rest/fitbit/user/ServiceUserRepository.kt

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@
1616
*/
1717
package org.radarbase.connect.rest.fitbit.user
1818

19+
import com.fasterxml.jackson.databind.ObjectMapper
1920
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
21+
import com.fasterxml.jackson.module.kotlin.readValue
22+
import com.fasterxml.jackson.module.kotlin.registerKotlinModule
2023
import io.ktor.client.HttpClient
21-
import io.ktor.client.call.body
2224
import io.ktor.client.engine.cio.CIO
2325
import io.ktor.client.plugins.HttpTimeout
2426
import io.ktor.client.plugins.auth.Auth
@@ -41,9 +43,11 @@ import io.ktor.http.contentType
4143
import io.ktor.http.isSuccess
4244
import io.ktor.http.takeFrom
4345
import io.ktor.serialization.jackson.jackson
46+
import io.ktor.serialization.kotlinx.json.json
4447
import kotlinx.coroutines.Dispatchers
4548
import kotlinx.coroutines.runBlocking
4649
import kotlinx.coroutines.withContext
50+
import kotlinx.serialization.json.Json
4751
import org.radarbase.connect.rest.RestSourceConnectorConfig
4852
import org.radarbase.connect.rest.fitbit.FitbitRestSourceConnectorConfig
4953
import org.radarbase.kotlin.coroutines.CacheConfig
@@ -67,6 +71,7 @@ class ServiceUserRepository : UserRepository {
6771
private val credentialCaches = ConcurrentHashMap<String, CachedValue<OAuth2UserCredentials>>()
6872
private val credentialCacheConfig =
6973
CacheConfig(refreshDuration = 1.days, retryDuration = 1.minutes)
74+
private val mapper = ObjectMapper().registerKotlinModule().registerModule(JavaTimeModule())
7075

7176
@Throws(IOException::class)
7277
override fun get(key: String): User = runBlocking(Dispatchers.Default) {
@@ -115,6 +120,13 @@ class ServiceUserRepository : UserRepository {
115120
baseUrl.host,
116121
)
117122
}
123+
install(ContentNegotiation) {
124+
json(
125+
Json {
126+
ignoreUnknownKeys = true
127+
},
128+
)
129+
}
118130
} else if (clientId != null && clientSecret != null) {
119131
install(Auth) {
120132
basic {
@@ -242,7 +254,7 @@ class ServiceUserRepository : UserRepository {
242254
}
243255
throw HttpResponseException(message, response.status.value)
244256
}
245-
response.body<T>()
257+
mapper.readValue<T>(response.bodyAsText())
246258
}
247259

248260
companion object {

0 commit comments

Comments
 (0)