LibreTube/app/src/main/java/com/github/libretube/extensions/ContentLength.kt

25 lines
780 B
Kotlin
Raw Normal View History

package com.github.libretube.extensions
import java.net.HttpURLConnection
import java.net.URL
2022-12-25 18:36:23 +05:30
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
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
}