forked from agzam/vyatsu-schedule
fix: streaming parsing to prevent crashes on low-end phones
This commit is contained in:
@@ -5,6 +5,7 @@ import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import java.io.InputStream
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
/**
|
||||
@@ -35,4 +36,15 @@ object VyatsuHttpClient {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Открывает потоковое тело ответа. Вызывающий обязан закрыть
|
||||
* возвращённый [InputStream], чтобы вернуть соединение в пул.
|
||||
*/
|
||||
suspend fun openStream(url: String): InputStream = withContext(Dispatchers.IO) {
|
||||
val resp = client.newCall(Request.Builder().url(url).build()).execute()
|
||||
Log.d(TAG, "GET $url -> ${resp.code}")
|
||||
check(resp.isSuccessful) { "HTTP ${resp.code} for $url" }
|
||||
resp.body!!.byteStream()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user