11package contributors
22
3- import com.fasterxml.jackson.annotation.JsonIgnoreProperties
4- import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
5- import io.reactivex.Flowable
6- import io.reactivex.Single
7- import io.reactivex.Observable
8- // import com.jakewharton.retrofit2.adapter.kotlin.coroutines.CoroutineCallAdapterFactory
3+ import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
4+ import kotlinx.serialization.ExperimentalSerializationApi
5+ import kotlinx.serialization.Serializable
6+ import kotlinx.serialization.json.Json
7+ import okhttp3.MediaType.Companion.toMediaType
98import okhttp3.OkHttpClient
109import retrofit2.Call
1110import retrofit2.Response
1211import retrofit2.Retrofit
1312import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
14- import retrofit2.converter.jackson.JacksonConverterFactory
1513import retrofit2.http.GET
1614import retrofit2.http.Path
17- import java.util.*
15+ import java.util.Base64
1816
1917interface GitHubService {
2018 @GET(" orgs/{org}/repos?per_page=100" )
@@ -29,24 +27,26 @@ interface GitHubService {
2927 ): Call <List <User >>
3028}
3129
32- @JsonIgnoreProperties(ignoreUnknown = true )
30+ @Serializable
3331data class Repo (
3432 val id : Long ,
3533 val name : String
3634)
3735
38- @JsonIgnoreProperties(ignoreUnknown = true )
36+ @Serializable
3937data class User (
4038 val login : String ,
4139 val contributions : Int
4240)
4341
42+ @Serializable
4443data class RequestData (
4544 val username : String ,
4645 val password : String ,
4746 val org : String
4847)
4948
49+ @OptIn(ExperimentalSerializationApi ::class )
5050fun createGitHubService (username : String , password : String ): GitHubService {
5151 val authToken = " Basic " + Base64 .getEncoder().encode(" $username :$password " .toByteArray()).toString(Charsets .UTF_8 )
5252 val httpClient = OkHttpClient .Builder ()
@@ -60,9 +60,10 @@ fun createGitHubService(username: String, password: String): GitHubService {
6060 }
6161 .build()
6262
63+ val contentType = " application/json" .toMediaType()
6364 val retrofit = Retrofit .Builder ()
6465 .baseUrl(" https://api.github.com" )
65- .addConverterFactory(JacksonConverterFactory .create(jacksonObjectMapper() ))
66+ .addConverterFactory(Json { ignoreUnknownKeys = true }.asConverterFactory(contentType ))
6667 .addCallAdapterFactory(RxJava2CallAdapterFactory .create())
6768 .client(httpClient)
6869 .build()
0 commit comments