// Downloading file using OkHttp & Okio

    private lateinit var client: OkHttpClient

    fun dowloadFile(url: String) {
        val httpUrl = HttpUrl.parse(url)!!
        val fileName = httpUrl.encodedPathSegments().last() ?: "file"
        val response = client.newCall(Request.Builder().get().url(url).build()).execute()
        val source = response.body()?.source()
        val file = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), fileName)
        if (file.createNewFile()) {
            val buffer = file.sink().buffer()
            source?.use { input ->
                buffer.use { output ->
                    output.writeAll(input)
                }
            }
        }
    }