Maurice Wingbermuhle
02/07/2020, 12:33 PMe5l
02/07/2020, 12:46 PMMaurice Wingbermuhle
02/07/2020, 12:51 PMMaurice Wingbermuhle
02/07/2020, 12:57 PMsuspend fun downloadFile(url: String): ByteArray {
val httpClient = HttpClient{
install(Logging) {
this.logger = Logger.SIMPLE
this.level = LogLevel.ALL
}
}
val statement = httpClient.request<HttpStatement>(url) {
range?.let {
header(HttpHeaders.Range, range)
}
}
return statement.execute {
val contentLength = it.contentLength()?.lowInt ?: 0
val byteArray = ByteArray(contentLength)
var offset = 0
do {
val currentRead = it.content.readAvailable(byteArray, offset, byteArray.size)
offset += currentRead
logger.logDebug("Download in progress, offset: ${offset}, current read ${currentRead} / ${contentLength}")
} while (offset < contentLength)
logger.logDebug("Download done")
return@execute byteArray
}
}
e5l
02/07/2020, 12:58 PMMaurice Wingbermuhle
02/07/2020, 1:02 PMimplementation "io.ktor:ktor-client-core:$ktor_version"
implementation "io.ktor:ktor-client-json:$ktor_version"
implementation "io.ktor:ktor-client-logging:$ktor_version"
implementation "io.ktor:ktor-client-serialization:$ktor_version"
JVM common depdendencies:
implementation "io.ktor:ktor-client-json-jvm:$ktor_version"
implementation "io.ktor:ktor-client-logging-jvm:$ktor_version"
implementation "io.ktor:ktor-client-serialization-jvm:$ktor_version"
Android dependencies:
implementation "io.ktor:ktor-client-android:$ktor_version"
Android depends on jvm common, and jvm common depends on maine5l
02/07/2020, 1:03 PM1.3.1
there was an issue fixed there?Maurice Wingbermuhle
02/07/2020, 1:07 PMMaurice Wingbermuhle
02/07/2020, 1:08 PMDownload in progress, offset: 4088, current read 4088 / 355835
Download in progress, offset: 4096, current read 8 / 355835
Maurice Wingbermuhle
02/07/2020, 1:37 PMDownload in progress, offset: 4096, current read 4096 / 355835
Maurice Wingbermuhle
02/07/2020, 3:21 PMe5l
02/07/2020, 4:42 PMMaurice Wingbermuhle
02/07/2020, 4:45 PMMaurice Wingbermuhle
02/11/2020, 10:24 AMe5l
02/11/2020, 10:30 AMMaurice Wingbermuhle
02/11/2020, 10:31 AMe5l
02/11/2020, 10:32 AMMaurice Wingbermuhle
02/11/2020, 12:34 PMMaurice Wingbermuhle
03/18/2020, 11:13 AMe5l
03/18/2020, 11:13 AMe5l
03/18/2020, 11:13 AMMaurice Wingbermuhle
03/18/2020, 11:14 AMMaurice Wingbermuhle
03/18/2020, 11:15 AMMaurice Wingbermuhle
03/18/2020, 11:16 AMe5l
03/18/2020, 11:26 AMhttpClient.request<HttpStatement> { ... } -> httpClient.request<String> { ... }
and drop the execute parte5l
03/18/2020, 11:27 AMMaurice Wingbermuhle
03/18/2020, 11:28 AMMaurice Wingbermuhle
03/18/2020, 11:50 AMMaurice Wingbermuhle
03/18/2020, 11:54 AMMaurice Wingbermuhle
03/18/2020, 12:05 PMe5l
03/18/2020, 12:06 PMMaurice Wingbermuhle
03/18/2020, 1:24 PMe5l
03/18/2020, 1:26 PMe5l
03/18/2020, 1:27 PMElena Lepilkina
03/18/2020, 1:28 PMe5l
03/18/2020, 1:28 PMElena Lepilkina
03/18/2020, 1:30 PMMaurice Wingbermuhle
03/18/2020, 1:31 PMtargets {
jvm()
android()
iosX64()
iosArm64()
configure([iosX64, iosArm64]) {
binaries.framework {
baseName = frameworkName
}
}
}
Maurice Wingbermuhle
03/18/2020, 1:32 PMElena Lepilkina
03/18/2020, 1:34 PMMaurice Wingbermuhle
03/18/2020, 1:36 PMElena Lepilkina
03/18/2020, 1:38 PMMaurice Wingbermuhle
03/18/2020, 1:39 PMElena Lepilkina
03/18/2020, 1:43 PMe5l
03/18/2020, 1:46 PMMaurice Wingbermuhle
03/18/2020, 3:02 PMMaurice Wingbermuhle
03/18/2020, 3:03 PMe5l
03/18/2020, 3:04 PMtime curl
this url in terminal, just to make sure that url is fineMaurice Wingbermuhle
03/18/2020, 3:04 PMMaurice Wingbermuhle
03/18/2020, 3:05 PMcurl 0.03s user 0.06s system 1% cpu 4.800 total
Maurice Wingbermuhle
03/18/2020, 3:06 PMe5l
03/18/2020, 3:06 PMMaurice Wingbermuhle
03/18/2020, 3:07 PMe5l
03/18/2020, 3:07 PM