saket
05/22/2020, 11:51 PMArkadii Ivanov
05/23/2020, 8:43 AMArkadii Ivanov
05/23/2020, 8:46 AMOmar Mainegra
05/23/2020, 2:07 PM@Serializable
data class Post(val id: Int, val title: String, val body: String)
typealias GetPostResult = (Post?) -> Unit
interface TodoApi {
fun getPost(id: Int, callback: GetPostResult)
}
class TodoApiImpl : TodoApi {
private val client: HttpClient =
HttpClient(httpEngine) {
install(JsonFeature) {
serializer = KotlinxSerializer(Json(JsonConfiguration.Stable.copy(ignoreUnknownKeys = true, isLenient = true)))
}
}
init {
client.ensureNeverFrozen()
}
override fun getPost(id: Int, callback: GetPostResult) {
GlobalScope.launch(Main) {
callback(
try {
client.get<Post>("<https://jsonplaceholder.typicode.com/posts/$id>")
} catch (e: Throwable) {
null
}
)
}
}
}
Omar Mainegra
05/23/2020, 2:08 PMensureNeverFrozen
is from reaktive-utils
Omar Mainegra
05/23/2020, 2:11 PMhttpEngine
is an expected HttpClientEngine
which resolves to OkHttp in Android and NSURLSession
in iOSArkadii Ivanov
05/23/2020, 2:15 PMOmar Mainegra
05/23/2020, 2:17 PMsaket
05/23/2020, 5:51 PMArkadii Ivanov
05/23/2020, 6:34 PMArkadii Ivanov
05/23/2020, 6:35 PMOmar Mainegra
05/23/2020, 7:02 PM1.3.5-native-mt
, no crashes so far (beyond InvalidMutabilityException,
etc), good point about their GH status thoOmar Mainegra
05/23/2020, 7:04 PMconfigurations.all {
resolutionStrategy {
force "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:${versions.coroutines}"
force "org.jetbrains.kotlinx:kotlinx-coroutines-core-native:${versions.coroutines}-native-mt"
}
}