aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2020-05-23 17:53:50 -0700
committerAllan Wang <me@allanwang.ca>2020-05-23 17:53:50 -0700
commitaaca5878d5ac84b27917bbf1b7994fe59733fc97 (patch)
tree6c7d9e12b492153eee3a6afa9884dbc18613af5f
parent000699d73c55cf6bfd5e03fc3f1b24daa21dd111 (diff)
downloadfrost-aaca5878d5ac84b27917bbf1b7994fe59733fc97.tar.gz
frost-aaca5878d5ac84b27917bbf1b7994fe59733fc97.tar.bz2
frost-aaca5878d5ac84b27917bbf1b7994fe59733fc97.zip
Query encode
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/facebook/FbUrlFormatter.kt15
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/facebook/parsers/SearchParser.kt3
-rw-r--r--app/src/test/kotlin/com/pitchedapps/frost/facebook/FbUrlTest.kt7
-rw-r--r--app/src/test/kotlin/com/pitchedapps/frost/utils/UrlTests.kt5
4 files changed, 21 insertions, 9 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbUrlFormatter.kt b/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbUrlFormatter.kt
index 5ae6856b..093c8c94 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbUrlFormatter.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbUrlFormatter.kt
@@ -18,6 +18,7 @@ package com.pitchedapps.frost.facebook
import android.net.Uri
import com.pitchedapps.frost.utils.L
+import com.pitchedapps.frost.utils.urlEncode
import java.net.URLDecoder
import java.nio.charset.StandardCharsets
@@ -89,21 +90,19 @@ class FbUrlFormatter(url: String) {
return cleanedUrl
}
- override fun toString(): String {
- val builder = StringBuilder()
- builder.append(cleaned)
+ override fun toString(): String = buildString {
+ append(cleaned)
if (queries.isNotEmpty()) {
- builder.append("?")
+ append("?")
queries.forEach { (k, v) ->
if (v.isEmpty()) {
- builder.append("$k&")
+ append("${k.urlEncode()}&")
} else {
- builder.append("$k=$v&")
+ append("${k.urlEncode()}=${v.urlEncode()}&")
}
}
}
- return builder.removeSuffix("&").toString()
- }
+ }.removeSuffix("&")
fun toLogList(): List<String> {
val list = mutableListOf(cleaned)
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/facebook/parsers/SearchParser.kt b/app/src/main/kotlin/com/pitchedapps/frost/facebook/parsers/SearchParser.kt
index 28b4a556..42a6ab53 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/facebook/parsers/SearchParser.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/facebook/parsers/SearchParser.kt
@@ -23,6 +23,7 @@ import com.pitchedapps.frost.facebook.FbItem
import com.pitchedapps.frost.facebook.formattedFbUrl
import com.pitchedapps.frost.facebook.parsers.FrostSearch.Companion.create
import com.pitchedapps.frost.utils.L
+import com.pitchedapps.frost.utils.urlEncode
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
@@ -31,7 +32,7 @@ import org.jsoup.nodes.Element
*/
object SearchParser : FrostParser<FrostSearches> by SearchParserImpl() {
fun query(cookie: String?, input: String): ParseResponse<FrostSearches>? {
- val url = "${FbItem._SEARCH_PARSE.url}?q=${if (input.isNotBlank()) input else "a"}"
+ val url = "${FbItem._SEARCH_PARSE.url}/?q=${if (input.isNotBlank()) input.urlEncode() else "a"}"
L._i { "Search Query $url" }
return parseFromUrl(cookie, url)
}
diff --git a/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbUrlTest.kt b/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbUrlTest.kt
index bdb74756..433fdb2a 100644
--- a/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbUrlTest.kt
+++ b/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbUrlTest.kt
@@ -163,6 +163,13 @@ class FbUrlTest {
assertFbFormat(expected, url)
}
+ @Test
+ fun queryUrlEncode() {
+ val url = "${ FB_URL_BASE}sample/?q=#foo"
+ val expected = "${ FB_URL_BASE}sample/?q=%23foo"
+ assertFbFormat(expected, url)
+ }
+
// @Test
// fun viewFullImageIndirect() {
// val urlBase = "photo/view_full_size/?fbid=1234&ref_component=mbasic_photo_permalink&ref_page=%2Fwap%2Fphoto.php&refid=13&_ft_=qid.1234%3Amf_story_key.1234%3Atop_level_post_id"
diff --git a/app/src/test/kotlin/com/pitchedapps/frost/utils/UrlTests.kt b/app/src/test/kotlin/com/pitchedapps/frost/utils/UrlTests.kt
index 85de8f89..ac6068ef 100644
--- a/app/src/test/kotlin/com/pitchedapps/frost/utils/UrlTests.kt
+++ b/app/src/test/kotlin/com/pitchedapps/frost/utils/UrlTests.kt
@@ -56,4 +56,9 @@ class UrlTests {
assertFalse(GOOGLE.isFacebookUrl, "google")
assertTrue(FACEBOOK_COM.isFacebookUrl, "facebook")
}
+
+ @Test
+ fun queryEncoding() {
+ assertEquals("%23foo", "#foo".urlEncode())
+ }
}