aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/kotlin/com/pitchedapps/frost/debugger
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2018-03-11 19:24:32 -0400
committerGitHub <noreply@github.com>2018-03-11 19:24:32 -0400
commitfe51373f5a95323d64f6d966888a2c6c62a36deb (patch)
tree328bf7ab5bf00f01e070e9d84ff71cac59b0ecf1 /app/src/main/kotlin/com/pitchedapps/frost/debugger
parent67988a25d83fc10b187fcc821c3ceacfad0195d5 (diff)
downloadfrost-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.kt27
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