all: allow unknown keys in responses

This commit is contained in:
Harsh Shandilya 2021-12-15 16:10:41 +05:30
parent b5c2dc9aaf
commit 6eb3acff78
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80
3 changed files with 12 additions and 3 deletions

View file

@ -38,12 +38,13 @@ object ApiModule {
@Provides @Provides
fun provideRetrofit( fun provideRetrofit(
client: Lazy<OkHttpClient>, client: Lazy<OkHttpClient>,
json: Lazy<Json>,
): Retrofit { ): Retrofit {
val contentType = "application/json".toMediaType() val contentType = "application/json".toMediaType()
return Retrofit.Builder() return Retrofit.Builder()
.client(client.get()) .client(client.get())
.baseUrl(LobstersApi.BASE_URL) .baseUrl(LobstersApi.BASE_URL)
.addConverterFactory(Json.asConverterFactory(contentType)) .addConverterFactory(json.get().asConverterFactory(contentType))
.build() .build()
} }
@ -51,4 +52,9 @@ object ApiModule {
fun provideApi(retrofit: Retrofit): LobstersApi { fun provideApi(retrofit: Retrofit): LobstersApi {
return retrofit.create() return retrofit.create()
} }
@Provides
fun provideJsonSerializer(): Json {
return Json { ignoreUnknownKeys = true }
}
} }

View file

@ -27,11 +27,12 @@ class LobstersApiTest {
private val contentType = "application/json".toMediaType() private val contentType = "application/json".toMediaType()
private val webServer = MockWebServer() private val webServer = MockWebServer()
private val okHttp = OkHttpClient.Builder().build() private val okHttp = OkHttpClient.Builder().build()
private val json = Json { ignoreUnknownKeys = true }
private val retrofit = private val retrofit =
Retrofit.Builder() Retrofit.Builder()
.client(okHttp) .client(okHttp)
.baseUrl("http://localhost:8080/") .baseUrl("http://localhost:8080/")
.addConverterFactory(Json.asConverterFactory(contentType)) .addConverterFactory(json.asConverterFactory(contentType))
.build() .build()
private val apiClient = retrofit.create<LobstersApi>() private val apiClient = retrofit.create<LobstersApi>()

View file

@ -9,6 +9,8 @@ import retrofit2.create
@OptIn(ExperimentalSerializationApi::class) @OptIn(ExperimentalSerializationApi::class)
class Api { class Api {
private val json = Json { ignoreUnknownKeys = true }
private fun getOkHttpClient(): OkHttpClient { private fun getOkHttpClient(): OkHttpClient {
return OkHttpClient.Builder() return OkHttpClient.Builder()
.addNetworkInterceptor { chain -> .addNetworkInterceptor { chain ->
@ -26,7 +28,7 @@ class Api {
return Retrofit.Builder() return Retrofit.Builder()
.client(okHttpClient) .client(okHttpClient)
.baseUrl(LobstersApi.BASE_URL) .baseUrl(LobstersApi.BASE_URL)
.addConverterFactory(Json.asConverterFactory(contentType)) .addConverterFactory(json.asConverterFactory(contentType))
.build() .build()
} }