package exh.util

import eu.kanade.tachiyomi.util.asJsoup
import exh.log.xLogW
import okhttp3.Response
import okhttp3.ResponseBody.Companion.toResponseBody
import org.jsoup.nodes.Document

fun Response.interceptAsHtml(block: (Document) -> Unit): Response {
    return if (body.contentType()?.type == "text" &&
        body.contentType()?.subtype == "html"
    ) {
        val bodyString = body.string()
        val rebuiltResponse = newBuilder()
            .body(bodyString.toResponseBody(body.contentType()))
            .build()
        try {
            // Search for captcha
            val parsed = asJsoup(html = bodyString)
            block(parsed)
        } catch (t: Throwable) {
            // Ignore all errors
            xLogW("Interception error!", t)
        } finally {
            close()
        }

        rebuiltResponse
    } else {
        this
    }
}
