1616 */
1717package org.radarbase.connect.rest.fitbit.user
1818
19+ import com.fasterxml.jackson.databind.ObjectMapper
1920import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
21+ import com.fasterxml.jackson.module.kotlin.readValue
22+ import com.fasterxml.jackson.module.kotlin.registerKotlinModule
2023import io.ktor.client.HttpClient
21- import io.ktor.client.call.body
2224import io.ktor.client.engine.cio.CIO
2325import io.ktor.client.plugins.HttpTimeout
2426import io.ktor.client.plugins.auth.Auth
@@ -41,9 +43,11 @@ import io.ktor.http.contentType
4143import io.ktor.http.isSuccess
4244import io.ktor.http.takeFrom
4345import io.ktor.serialization.jackson.jackson
46+ import io.ktor.serialization.kotlinx.json.json
4447import kotlinx.coroutines.Dispatchers
4548import kotlinx.coroutines.runBlocking
4649import kotlinx.coroutines.withContext
50+ import kotlinx.serialization.json.Json
4751import org.radarbase.connect.rest.RestSourceConnectorConfig
4852import org.radarbase.connect.rest.fitbit.FitbitRestSourceConnectorConfig
4953import 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