1616 */
1717package org.radarbase.connect.rest.oura.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.oura.OuraRestSourceConnectorConfig
4852import org.radarbase.kotlin.coroutines.CacheConfig
4953import org.radarbase.kotlin.coroutines.CachedSet
@@ -69,6 +73,7 @@ class OuraServiceUserRepository : UserRepository {
6973 private val credentialCaches = ConcurrentHashMap <String , CachedValue <OAuth2UserCredentials >>()
7074 private val credentialCacheConfig =
7175 CacheConfig (refreshDuration = 1 .days, retryDuration = 1 .minutes)
76+ private val mapper = ObjectMapper ().registerKotlinModule().registerModule(JavaTimeModule ())
7277
7378 @Throws(IOException ::class )
7479 override fun get (key : String ): User = runBlocking(Dispatchers .Default ) {
@@ -86,18 +91,17 @@ class OuraServiceUserRepository : UserRepository {
8691 clientId = config.ouraUserRepositoryClientId,
8792 clientSecret = config.ouraUserRepositoryClientSecret,
8893 )
89-
9094
9195 userCache = CachedSet (
9296 CacheConfig (refreshDuration = 1 .hours, retryDuration = 1 .minutes),
9397 ) {
9498 makeRequest<OuraUsers > { url(" users?source-type=Oura" ) }
9599 .users
96100 .toHashSet()
97- // .filterTo(HashSet()) { u ->
98- // u.isComplete() &&
99- // (containedUsers.isEmpty() || u.versionedId in containedUsers)
100- // }
101+ .filterTo(HashSet ()) { u ->
102+ u.isComplete() &&
103+ (containedUsers.isEmpty() || u.versionedId in containedUsers)
104+ }
101105 }
102106 }
103107
@@ -118,6 +122,13 @@ class OuraServiceUserRepository : UserRepository {
118122 baseUrl.host,
119123 )
120124 }
125+ install(ContentNegotiation ) {
126+ json(
127+ Json {
128+ ignoreUnknownKeys = true
129+ },
130+ )
131+ }
121132 } else if (clientId != null && clientSecret != null ) {
122133 install(Auth ) {
123134 basic {
@@ -244,7 +255,7 @@ class OuraServiceUserRepository : UserRepository {
244255 }
245256 throw HttpResponseException (message, response.status.value)
246257 }
247- response.body <T >()
258+ mapper.readValue <T >(response.bodyAsText() )
248259 }
249260
250261 companion object {
0 commit comments