LibreTube/app/src/main/java/com/github/libretube/extensions/ContentLength.kt
Krunal Patel 4f0f9b7560 Fix notification action, download fragment and resource leak
- Bind service when service started using notification resume action.

- Use `HttpURLConnection` to download file.

- Use progress bar to determine overall progress.
2022-12-21 21:41:37 +05:30

25 lines
780 B
Kotlin

package com.github.libretube.extensions
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import java.net.HttpURLConnection
import java.net.URL
suspend fun URL.getContentLength(def: Long = -1): Long {
try {
return withContext(Dispatchers.IO) {
val connection = openConnection() as HttpURLConnection
connection.setRequestProperty("Range", "bytes=0-")
val value = connection.getHeaderField("content-length")
// If connection accepts range header, try to get total bytes
?: connection.getHeaderField("content-range").split("/")[1]
connection.disconnect()
value.toLong()
}
} catch (e: Exception) { e.printStackTrace() }
return def
}