diff options
author | Allan Wang <me@allanwang.ca> | 2017-12-29 19:39:04 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-29 19:39:04 -0500 |
commit | 32e6b5be0e662bbac22806bcc87259fd1a2e2ed0 (patch) | |
tree | c97f7ef11b60231bbe7337f5960413b95da0a8c2 /app/src/main/kotlin/com/pitchedapps/frost/parsers/FrostParser.kt | |
parent | 8fee0629c27edee847358efc82309118f3a9a3a5 (diff) | |
download | frost-32e6b5be0e662bbac22806bcc87259fd1a2e2ed0.tar.gz frost-32e6b5be0e662bbac22806bcc87259fd1a2e2ed0.tar.bz2 frost-32e6b5be0e662bbac22806bcc87259fd1a2e2ed0.zip |
Feature/native notifs (#579)
* Improve parser and add zip test
* Remove ActivityOptionsCompat, resolves #555
* Create native notifs
* Add animations
* Add image rounder
* Improve glide transformations
* Add request service
* Fix parser
* Fix parser
* Add thumbnail and fix notification text
* Update parsers and regex
* Auto mark as read
* Add request implementation in pending intent
* Remove unnecessary return data
* Simplify command retrieval
* Use name keys instead
* Revamp all bundle calls
* Fix up thumbnail layout
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/parsers/FrostParser.kt')
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/parsers/FrostParser.kt | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/parsers/FrostParser.kt b/app/src/main/kotlin/com/pitchedapps/frost/parsers/FrostParser.kt index 016f33e8..f0938eca 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/parsers/FrostParser.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/parsers/FrostParser.kt @@ -9,6 +9,7 @@ import com.pitchedapps.frost.utils.frostJsoup import org.jsoup.Jsoup import org.jsoup.nodes.Document import org.jsoup.nodes.Element +import org.jsoup.select.Elements /** * Created by Allan Wang on 2017-10-06. @@ -39,12 +40,19 @@ interface FrostParser<out T : Any> { fun parse(cookie: String?, document: Document): ParseResponse<T>? /** + * Call parsing using jsoup to fetch from given url + */ + fun parseFromUrl(cookie: String?, url: String): ParseResponse<T>? + + /** * Call parsing with given data */ fun parseFromData(cookie: String?, text: String): ParseResponse<T>? } +const val FALLBACK_TIME_MOD = 1000000 + data class FrostLink(val text: String, val href: String) data class ParseResponse<out T>(val cookie: String, val data: T) { @@ -68,7 +76,7 @@ internal fun <T> List<T>.toJsonString(tag: String, indent: Int) = StringBuilder( */ internal abstract class FrostParserBase<out T : Any>(private val redirectToText: Boolean) : FrostParser<T> { - override final fun parse(cookie: String?) = parse(cookie, frostJsoup(cookie, url)) + override final fun parse(cookie: String?) = parseFromUrl(cookie, url) override final fun parseFromData(cookie: String?, text: String): ParseResponse<T>? { cookie ?: return null @@ -77,6 +85,9 @@ internal abstract class FrostParserBase<out T : Any>(private val redirectToText: return ParseResponse(cookie, data) } + override final fun parseFromUrl(cookie: String?, url: String): ParseResponse<T>? = + parse(cookie, frostJsoup(cookie, url)) + override fun parse(cookie: String?, document: Document): ParseResponse<T>? { cookie ?: return null if (redirectToText) @@ -94,7 +105,10 @@ internal abstract class FrostParserBase<out T : Any>(private val redirectToText: * Returns the formatted url, or an empty string if nothing was found */ protected fun Element.getInnerImgStyle() = - FB_CSS_URL_MATCHER.find(select("i.img[style*=url]").attr("style"))[1]?.formattedFbUrl ?: "" + select("i.img[style*=url]").getStyleUrl() + + protected fun Elements.getStyleUrl() = + FB_CSS_URL_MATCHER.find(attr("style"))[1]?.formattedFbUrl protected open fun textToDoc(text: String) = if (!redirectToText) Jsoup.parse(text) |