Guilherme Krzisch
05/24/2023, 6:52 PMGuilherme Krzisch
05/24/2023, 6:53 PM<http://java.io|java.io>.*
classes:
private val client = HttpClient {
install(HttpTimeout) {
requestTimeoutMillis = 30_000
connectTimeoutMillis = 30_000
socketTimeoutMillis = 30_000
}
}
@Suppress("BlockingMethodInNonBlockingContext")
actual suspend fun downloadAndDecompressGzipFile(url: String, destination: Path) {
val response = client.get(url)
val inputStream = BufferedInputStream(InputSource(GZIPInputStream(response.bodyAsChannel().toInputStream())).byteStream)
val outputStream = BufferedOutputStream(FileOutputStream(destination.toFile()))
inputStream.copyTo(outputStream)
outputStream.flush()
outputStream.close()
inputStream.close()
}
Jeff Lockhart
05/24/2023, 6:54 PMGuilherme Krzisch
05/24/2023, 7:56 PMsuspend fun downloadAndDecompressGzipFile(url: String, destination: Path) {
httpClient.readBytes(url)
.uncompress(GZIPNoCrc)
.writeToFile(getFullPathWithFileName(destination))
}
private fun getFullPathWithFileName(path: Path): String {
return path.segments.joinToString("/")
}
Guilherme Krzisch
05/24/2023, 7:57 PMJeff Lockhart
05/24/2023, 11:21 PM