diff options
author | Allan Wang <me@allanwang.ca> | 2018-03-11 19:24:32 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-11 19:24:32 -0400 |
commit | fe51373f5a95323d64f6d966888a2c6c62a36deb (patch) | |
tree | 328bf7ab5bf00f01e070e9d84ff71cac59b0ecf1 /app/src/main/kotlin/com/pitchedapps/frost/debugger | |
parent | 67988a25d83fc10b187fcc821c3ceacfad0195d5 (diff) | |
download | frost-fe51373f5a95323d64f6d966888a2c6c62a36deb.tar.gz frost-fe51373f5a95323d64f6d966888a2c6c62a36deb.tar.bz2 frost-fe51373f5a95323d64f6d966888a2c6c62a36deb.zip |
Enhancement/debug mode (#779)
* Update changelog
* Improve debugger
* Remove need for mapping urls
* Remove excess logs
* Clean up
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/debugger')
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/debugger/OfflineWebsite.kt | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/debugger/OfflineWebsite.kt b/app/src/main/kotlin/com/pitchedapps/frost/debugger/OfflineWebsite.kt index 791e6a69..95162932 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/debugger/OfflineWebsite.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/debugger/OfflineWebsite.kt @@ -9,8 +9,11 @@ import com.pitchedapps.frost.facebook.requests.zip import com.pitchedapps.frost.utils.createFreshDir import com.pitchedapps.frost.utils.createFreshFile import com.pitchedapps.frost.utils.frostJsoup +import com.pitchedapps.frost.utils.unescapeHtml import okhttp3.Request import okhttp3.ResponseBody +import org.jsoup.Jsoup +import org.jsoup.nodes.Document import org.jsoup.nodes.Element import org.jsoup.nodes.Entities import java.io.File @@ -29,6 +32,8 @@ import java.util.zip.ZipOutputStream */ class OfflineWebsite(private val url: String, private val cookie: String = "", + baseUrl: String? = null, + private val html: String? = null, /** * Directory that holds all the files */ @@ -38,7 +43,8 @@ class OfflineWebsite(private val url: String, /** * Supplied url without the queries */ - val baseUrl = url.substringBefore("?").trim('/') + private val baseUrl = (baseUrl ?: url.substringBefore("?") + .substringBefore(".com")).trim('/') private val mainFile = File(baseDir, "index.html") private val assetDir = File(baseDir, "assets") @@ -50,7 +56,7 @@ class OfflineWebsite(private val url: String, private val L = KauLoggerExtension("Offline", com.pitchedapps.frost.utils.L) init { - if (!baseUrl.startsWith("http")) + if (!this.baseUrl.startsWith("http")) throw IllegalArgumentException("Base Url must start with http") } @@ -94,7 +100,13 @@ class OfflineWebsite(private val url: String, if (cancelled) return - val doc = frostJsoup(cookie, url) + val doc: Document + if (html == null || html.length < 100) { + doc = frostJsoup(cookie, url) + } else { + doc = Jsoup.parse("<html>${html.unescapeHtml()}</html>") + L.d { "Building data from supplied content of size ${html.length}" } + } doc.setBaseUri(baseUrl) doc.outputSettings().escapeMode(Entities.EscapeMode.extended) if (doc.childNodeSize() == 0) { @@ -125,8 +137,11 @@ class OfflineWebsite(private val url: String, progress(50) downloadCss().subscribe { cssLinks, cssThrowable -> + if (cssThrowable != null) { - L.e { "CSS parsing failed" } + L.e { "CSS parsing failed: ${cssThrowable.message} $cssThrowable" } + callback(false) + return@subscribe } progress(70) @@ -291,8 +306,8 @@ class OfflineWebsite(private val url: String, private fun String.shorten() = if (length <= 10) this else substring(length - 10) - private fun Set<String>.clean() - = filter(String::isNotBlank).filter { it.startsWith("http") } + private fun Set<String>.clean(): List<String> = + filter(String::isNotBlank).filter { it.startsWith("http") } private fun reset() { cancelled = false |