From 6eb3acff78b32ac5a73542714410cd7c87a2ddba Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Wed, 15 Dec 2021 16:10:41 +0530 Subject: [PATCH] all: allow unknown keys in responses --- .../dev/msfjarvis/claw/android/injection/ApiModule.kt | 8 +++++++- .../test/kotlin/dev/msfjarvis/claw/api/LobstersApiTest.kt | 3 ++- desktop/src/jvmMain/kotlin/Api.kt | 4 +++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/injection/ApiModule.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/injection/ApiModule.kt index ad60190f..71f8d6a2 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/injection/ApiModule.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/injection/ApiModule.kt @@ -38,12 +38,13 @@ object ApiModule { @Provides fun provideRetrofit( client: Lazy, + json: Lazy, ): Retrofit { val contentType = "application/json".toMediaType() return Retrofit.Builder() .client(client.get()) .baseUrl(LobstersApi.BASE_URL) - .addConverterFactory(Json.asConverterFactory(contentType)) + .addConverterFactory(json.get().asConverterFactory(contentType)) .build() } @@ -51,4 +52,9 @@ object ApiModule { fun provideApi(retrofit: Retrofit): LobstersApi { return retrofit.create() } + + @Provides + fun provideJsonSerializer(): Json { + return Json { ignoreUnknownKeys = true } + } } diff --git a/api/src/test/kotlin/dev/msfjarvis/claw/api/LobstersApiTest.kt b/api/src/test/kotlin/dev/msfjarvis/claw/api/LobstersApiTest.kt index 5fba4628..9312b42e 100644 --- a/api/src/test/kotlin/dev/msfjarvis/claw/api/LobstersApiTest.kt +++ b/api/src/test/kotlin/dev/msfjarvis/claw/api/LobstersApiTest.kt @@ -27,11 +27,12 @@ class LobstersApiTest { private val contentType = "application/json".toMediaType() private val webServer = MockWebServer() private val okHttp = OkHttpClient.Builder().build() + private val json = Json { ignoreUnknownKeys = true } private val retrofit = Retrofit.Builder() .client(okHttp) .baseUrl("http://localhost:8080/") - .addConverterFactory(Json.asConverterFactory(contentType)) + .addConverterFactory(json.asConverterFactory(contentType)) .build() private val apiClient = retrofit.create() diff --git a/desktop/src/jvmMain/kotlin/Api.kt b/desktop/src/jvmMain/kotlin/Api.kt index bfd30ae7..d0148c39 100644 --- a/desktop/src/jvmMain/kotlin/Api.kt +++ b/desktop/src/jvmMain/kotlin/Api.kt @@ -9,6 +9,8 @@ import retrofit2.create @OptIn(ExperimentalSerializationApi::class) class Api { + private val json = Json { ignoreUnknownKeys = true } + private fun getOkHttpClient(): OkHttpClient { return OkHttpClient.Builder() .addNetworkInterceptor { chain -> @@ -26,7 +28,7 @@ class Api { return Retrofit.Builder() .client(okHttpClient) .baseUrl(LobstersApi.BASE_URL) - .addConverterFactory(Json.asConverterFactory(contentType)) + .addConverterFactory(json.asConverterFactory(contentType)) .build() }