aboutsummaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2017-12-29 2Date: Sat, 29 Jun 2024 07:02:58 GMT 3:37:10 -0500
committerGitHub <noreply@github.com>2017-12-29 23:37:10 -0500
commit041bafcceadbd5203e95f2692899ac903dd2e883 (patch)
tree9c7294cd32928a6000b04d7ce7b5a3e52cff65c5 /app/src
parent32e6b5be0e662bbac22806bcc87259fd1a2e2ed0 (diff)
downloadfrost-041bafcceadbd5203e95f2692899ac903dd2e883.tar.gz
frost-041bafcceadbd5203e95f2692899ac903dd2e883.tar.bz2
frost-041bafcceadbd5203e95f2692899ac903dd2e883.zip
Feature/image retrieval (#581)v1.7.3
* Refactor * Attempt new content * Clean up to make compile friendly * Update docs
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/facebook/FbItem.kt1
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/facebook/FbRegex.kt1
-rw-r--r--app/src/main/kotlin/c: 100.0%;'/>
-rw-r--r-- -rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/services/FrostRequestService.kt6
< Feature/image retrieval (#581) - frost - My fork of Frost, a third-party app for Faceom/pitchedapps/frost/facebook/requests/FbRequest.kt</a> (renamed from app/src/main/kotlin/com/pitchedapps/frost/facebook/FbRequest.kt)</td><td class='right'>52</td><td class='graph'><table summary='file diffstat' width='67%'><tr><td class='add' style='width: 34.3%;'/><td class='rem' style='width: 43.3%;'/><td class='none' style='width: 22.4%;'/></tr></table></td></tr> <tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/frost/diff/app/src/main/kotlin/com/pitchedapps/frost/facebook/requests/Images.kt?h=v1.7.5&id=041bafcceadbd5203e95f2692899ac903dd2e883'>app/src/main/kotlin/com/pitchedapps/frost/facebook/requests/Images.kt</a></td><td class='right'>67</td><td class='graph'><table summary='file diffstat' width='67%'><tr><td class='add' style='widthons.kt?h=v1.7.5&id=041bafcceadbd5203e95f2692899ac903dd2e883'>app/src/main/kotlin/com/pitchedapps/frost/facebook/requests/tr> <tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/frost/diff/app/src/test/kotlin/com/pitchedapps/frost/MiscTest.kt?h=v1.7.5&id=041bafcceadbd5203e95f2692899ac903dd2e883'>app/src/test/kotlin/com/pitchedapps/frost/MiscTest.kt</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='67%'><tr><td class='add' style='width: 1.5%;'/><td class='rem' style='width: 1.5%;'/><td class='none' style='width: 97.0%;'/></tr></table></td></tr> <tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/frost/diff/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRegexTest.kt?h=v1.7.5&id=041bafcceadbd5203e95f2692899ac903dd2e883'>app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRegexTest.kt</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='67%'><tr><td class='add' style='width: 9.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 91.0%;'/></tr></table></td></tr> <tr><td class='mode'>-rw-r--r--</td><td cla/Notifications.kt</a></td><td class='right'>27</td><td class='graph'><table summary='file diffstat' width='67%'><tr><td class='add' 95f2692899ac903dd2e883'>app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRequestTest.kt</a></td><td class='right'>11</td><td class='graph'><table summary='file diffstat' width='67%'><tr><td class='add' style='width: 16.4%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 83.6%;'/></tr></table></td></tr> <tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/frost/diff/app/src/test/kotlin/com/pitchedapps/frost/internal/Internal.kt?h=v1.7.5&id=041bafcceadbd5203e95f2692899ac903dd2e883'>app/src/test/kotlin/com/pitchedapps/frost/internal/Internal.kt</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='67%'><tr><td class='add' style='width: 3.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 97.0%;'/></tr></table></td></tr> </table><div class='diffstat-summary'>10 files changed, 142 insertiss='upd'><a href='/frost/diff/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRequestTest.kt?h=v1.7.5&id=041bafcceadbd5203e/frost/facebook/FbItem.kt b/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbItem.kt<br/>index e2e9d9e5..ad180023 100644<br/>--- a/<a href='/frost/tree/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbItem.kt?h=v1.7.5&id=32e6b5be0e662bbac22806bcc87259fd1a2e2ed0'>app/src/main/kotlin/com/pitchedapps/frost/facebook/FbItem.kt</a><br/>+++ b/<a href='/frost/tree/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbItem.kt?h=v1.7.5&id=041bafcceadbd5203e95f2692899ac903dd2e883'>app/src/main/kotlin/com/pitchedapps/frost/facebook/FbItem.kt</a></div><div class='hunk'>@@ -20,6 +20,7 @@ enum class FbItem(</div><div class='ctx'> relativeUrl: String,</div><div class='ctx'> val fragmentCreator: () -> BaseFragment = ::WebFragment</div><div class='ctx'> ) : EnumBundle<FbItem> {</div><div class='add'>+</div><div class='ctx'> ACTIVITY_LOG(R.string.activity_log, GoogleMaterial.Icon.gmd_list, "me/allactivity"),</div><div class='ctx'> BIRTHDAYS(R.string.birthdays, GoogleMaterial.Icon.s/frost/facebook/FbRegex.kt<br/>index 24f685be..acc23cad 100644<br/>--- a/<a href='/frost/tree/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbRegex.kt?h=v1.7.5&id=32e6b5be0e662bbac22806bcc87259fd1a2e2ed0'>app/src/main/kotlin/com/pitchedapps/frosts='hunk'>@@ -24,6 +24,7 @@ val FB_EPOCH_MATCHER: Regex by lazy { Regex(":([0-9]+)") }</div><div class='ctx'> val FB_NOTIF_ID_MATCHER: Regex by lazy { Regex("notif_([0-9]+)") }</div><div class='ctx'> val FB_MESSAGE_NOTIF_ID_MATCHER: Regex by lazy { Regex("[ class='ctx'> operator fun MatchResult?.get(groupIndex: Int) = this?.groupValues?.get(groupIndex)</div><div class='ctx'> </div><div class='head'>diff --git a/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbRequest.kt b/app/src/main/kotlin/com/pitchedapps/frost/facebook/requests/FbRequest.kt<br/>index 51e14097..e3e77c5c 100644<br/>--- a/<a href='/frost/tree/app/src/main/kotons, 33 deletions</div><table summary='diff' class='diff'><tr><td><div class='head'>diff --git a/app/src/main/kotlin/com/pitchedappsgmd_cake, "events/birthdays"),</div><div class='ctx'> CHAT(R.string.chat, GoogleMaterial.Icon.gmd_chat, "buddylist"),</div><div class='head'>diff --git a/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbRegex.kt b/app/src/main/kotlin/com/pitchedapp/facebook/FbRegex.kt</a><br/>+++ b/<a href='/frost/tree/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbRegex.kt?h=v1.7.5&id=041bafcceadbd5203e95f2692899ac903dd2e883'>app/src/main/kotlin/com/pitchedapps/frost/facebook/FbRegex.kt</a></div><div clasthread|user]_fbid_([0-9]+)") }</div><div class='ctx'> val FB_CSS_URL_MATCHER: Regex by lazy { Regex("url\\([\"|']?(.*?)[\"|']?\\)") }</div><div class='add'>+val FB_JSON_URL_MATCHER: Regex by lazy { Regex("\"(http.*?)\"") }</div><div class='ctx'> </div><divtchedapps/frost/facebook/FbRequest.kt</a><br/>+++ b/<a href='/frost/tree/app/src/main/kotlin/com/pitchedapps/frost/facebook/lin/com/pitchedapps/frost/facebook/FbRequest.kt?h=v1.7.5&id=32e6b5be0e662bbac22806bcc87259fd1a2e2ed0'>app/src/main/kotlin/com/piequests/FbRequest.kt</a></div><div class='hunk'>@@ -1,6 +1,7 @@</div><div class='del'>-package com.pitchedapps.frost.facebook</div><div class='add'>+package com.pitchedapps.frost.facebook.requests</div><div class='ctx'> </div><div class='ctx'> import com.pitchedapps.frost.BuildConfig</div><div class='add'>+import com.pitchedapps.frost.facebook.*</div><div class='ctx'> import com.pitchedapps.frost.utils.L</div><div class='ctx'> import io.reactivex.Single</div><div class='ctx'> import io.reactivex.schedulers.Schedulers</div><div class='hunk'>@@ -13,7 +14,12 @@ import org.apache.commons.text.StringEscapeUtils</div><div class='ctx'> */</div><div class='ctx'> private val authMap: MutableMap<String, RequestAuth> = mutableMapOf()</div><div class='ctx'> </div><div class='del'>-fun String.fbRequest(action: RequestAuth.() -> Unit) {</div><div class='add'>+/**</div><div class='add'>+ * Synchronously fetch [RequestAuth] from cookie</div><div class='add'>+ * [action] will only be called if a valid auth is found.</div><div class='add'>+ * Otherwise, [fail] will be called</div><div class='add'>+ */</div><div class='add'>+fun String.fbRequest(fail: () -> Unit = {}, action: RequestAuth.() -> Unit) {</div><div class='ctx'> val savedAuth = authMap[this]</div>v class='ctx'> if (!auth.isValid) {</div><div class='ctx'> L.e("Attempted fbrequest with invalid auth")</div><div class='del'>- return</div><div class='add'>+ return fail()</div><div class='ctx'> }</div><di'> }</div><div class='ctx'> </div><div class='add'>+/**</div><div class='add'>+ * Underlying container for all fb requests</div><div class='add'>+ */</div><div class='ctx'> data class RequestAuth(val userId: Long = -1,</div><div class='ctx'> container with the execution call</div><div class='ctx'> */</div><div class='del'>-class FrostRequest<out T : Any>(varequests/FbRequest.kt?h=v1.7.5&id=041bafcceadbd5203e95f2692899ac903dd2e883'>app/src/main/kotlin/com/pitchedapps/frost/facebook/r<div class='ctx'> if (savedAuth != null) {</div><div class='ctx'> savedAuth.action()</div><div class='hunk'>@@ -21,7 +27,7 @@ fun String.fbRequest(action: RequestAuth.() -> Unit) {</div><div class='ctx'> val auth = getAuth()</div><div class='ctx'> authMap.put(this, auth)</div><div class='ctx'> L.i(null, "Found auth $auth")</div><div class='hunk'>@@ -29,6 +35,9 @@ fun String.fbRequest(action: RequestAuth.() -> Unit) {</div><div class='ctx'> }</div><div class='ctx val cookie: String = "",</div><div class='ctx'> val fb_dtsg: String = "",</div><div class='hunk'>@@ -40,11 +49,11 @@ data class RequestAuth(val userId: Long = -1,</div><div class='ctx'> /**</div><div class='ctx'> * Request ivate val invoke: (Call) -> T) {</div><div class='ctx'> fun invoke() = invoke(call)</div><div class='ctx'> }</div><dil call: Call, private val invoke: (Call) -> T) {</div><div class='add'>+class FrostRequest<out T : Any?>(val call: Call, prinline fun <T : Any?> RequestAuth.frostRequest(</div><div class='ctx'> noinline invoke: (Call) -> T,</div><div class='ctx'> builder: Request.Builder.() -> Request.Builder // to ensure we don't do anything extra at the end</div><lue) -></div><div class='ctx'> val v = value?.toString() ?: ""</div><div class='hunk'>@@ -70,7 +79,7 @@ private fun List<Pair<String, Any?>>.toForm(): FormBody {</div><div class='ctx'> return builder.build()</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-private fun List<Pair<String, Any?>>.withEmptyData(vararg key: String): List<Pair<String, Any?>> {</div><div class='add'>+internal fun List<Pair<String, Any?>>.withEmpty-81,7 +90,7 @@ private fun String.requestBuilder() = Request.Builder()</div><div class='ctx'> .header("User-Agent", v class='ctx'> </div><div class='del'>-private inline fun <T : Any> RequestAuth.frostRequest(</div><div class='add'>+internal div class='ctx'> ): FrostRequest<T> {</div><div class='hunk'>@@ -61,7 +70,7 @@ private val client: OkHttpClient by lazy {</div><div class='ctx'> builder.build()</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-private fun List<Pair<String, Any?>>.toForm(): FormBody {</div><div class='add'>+internal fun List<Pair<String, Any?>>.toForm(): FormBody {</div><div class='ctx'> val builder = FormBody.Builder()</div><div class='ctx'> forEach { (key, vaData(vararg key: String): List<Pair<String, Any?>> {</div><div class='ctx'> val newList = toMutableList()</div><div class='ctx'> newList.addAll(key.map { it to null })</div><div class='ctx'> return newList</div><div class='hunk'>@@ del'>-private fun Request.Builder.call() = client.newCall(build())</div><div class='add'>+fun Request.Builder.call() = clienUSER_AGENT_BASIC)</div><div class='ctx'> .cacheControl(CacheControl.FORCE_NETWORK)</div><div class='ctx'> </div><div class='ar auth = RequestAuth(cookie = this)</div><div class='hunk'>@@ -113,22 +122,6 @@ fun String.getAuth(): RequestAuth {</div><div class='ctx'> return auth</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-fun RequestAuth.markNotificationRead(notifId: Long): FrostRequest<Boolean> {</div><div class='del'>-</div><div class='del'>- val body = listOf(</div><div class='del'>- "click_type" to "notification_click",</div><div class='del'>- "id" to notifId,</div><div class='del'>- "target_id" to "null",</div><div class='del'>- "fb_dtsg" to fb_dtsg,</div><div class='del'>- "__user" to userId</div><div class='del'>- ).withEmptyData("m_sess", "__dyn", "__req", "__ajax__")</div><div class='del'>-}</div><div class='del'>-</div><div class='ctx'> inline fun <T, reified R : Any, O> Array<T>.zip(crt.newCall(build())!!</div><div class='ctx'> </div><div class='ctx'> fun String.getAuth(): RequestAuth {</div><div class='ctx'> vclass='del'>-</div><div class='del'>- return frostRequest(::executeForNoError) {</div><div class='del'>- url("${FB_URL_BASE}a/jewel_notifications_log.php")</div><div class='del'>- post(body.toForm())</div><div class='del'>- }</div><div : (T) -> R): Single<O> {</div><div class='ctx'> val singles = map { Single.fromCallable { caller(it) }.subscribeOn(Schedulers.io()) }</div><div class='hunk'>@@ -138,11 +131,6 @@ inline fun <T, reified R : Any, O> Array<T>.zip(crossinline mapper: (List<R>) -></div><div class='ctx'> }</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-fun RequestAuth.markNotificationsRead(vararg notifId: Long) =</div><div class='del'>- notifId.toTypedArray().zip<Long, Boolean, Boolean>(</div><div class='del'>- { it.all { it } },</div><div class='del'>- ossinline mapper: (List<R>) -> O,</div><div class='ctx'> crossinline callerbody.string())[1] ?: return null</div><div class='add'>+ return StringEscapeUtils.unescapeEcmaScript(url)</div><div class='add'>+}</div><div class='head'>diff --git a/app/src/main/kotlin/com/pitchedapps/frost/facebook/requests/Images.kt b/app/src/main/kotlin/com/pitchedapps/frost/facebook/requests/Images.kt<br/>new file mode 100644<br/>index 00000000..61a94ac5<br/>--- /dev/null<br/>+++ b/<a href='/frost/tree/app/src/main/kotlin/com/pitchedapps/frost/facebook/requests/Images.kt?h=v1.7.5&id=041bafccead'add'>+import com.bumptech.glide.Priority</div><div class='add'>+import com.bumptech.glide.load.DataSource</div><div class='add'>+import com.bumptech.glide.load.data.DataFetcher</div><div class='add'>+import com.pitchedapps.frost.facebook.FB_URL_BASE</div><div class='add'>+import okhttp3.Call</div><div class='add'>+import okhttp3.Request</div><div class='add'>+import java.io.IO { markNotificationRead(it).invoke() })</div><div class='del'>-</div><div class='ctx'> /**</div><div class='ctx'> * Execute the call and attempt to check validity</div><div class='ctx'> * Valid = not blank & no "error" instance</div><div class='hunk'>@@ -158,3 +146,9 @@ fun executeForNoError(call: Call): Boolean {</div><div class='ctx'> }</div><div class='ctx'> return !empty</div><div class='ctx'> }</div><div class='add'>+</div><div class='add'>+fun getJsonUrl(call: Call): String? {</div><div class='add'>+ val body = call.execute().body() ?: return null</div><div class='add'>+ val url = FB_JSON_URL_MATCHER.find(bd5203e95f2692899ac903dd2e883'>app/src/main/kotlin/com/pitchedapps/frost/facebook/requests/Images.kt</a></div><div class='hunk'>@@ -0,0 +1,67 @@</div><div class='add'>+package com.pitchedapps.frost.facebook.requests</div><div class='add'>+</div><div class=>+ * Created by Allan Wang on 29/12/17.</div><div class='add'>+ */</div><div class='add'>+fun RequestAuth.getFullSizedImage(Exception</div><div class='add'>+import java.io.InputStream</div><div class='add'>+</div><div class='add'>+/**</div><div class='add'__=&__user=$userId")</div><div class='add'>+ get()</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+class ImageFbidFetcher(private val fbid: Long,</div><div class='add'>+ private val cookie: String) : DataFetcher<InputStream> {</div><div class='add'>+</div><div class='add'>+ @Volatile private var cancelled: Boolean = false</div><div class='add'>+ private var urlCall: Call? = null</div><div class='add'>+ private var inputStream: InputStream? = null</div><div class='add'>+</div><div class='add'>+ private fun DataFetcher.DataCallback<in InputStream>.fail(msg: String) {</div><div class='add'>+ onLoadFailed(RuntimeException(msg))</div><div class='add'>+ }</div><div class='add'>+<div class='add'>+ override fun loadData(priority: Priority, callback: DataFetcher.DataCallback<in InputStream>) {</div><div class='add'>+ cookie.fbRequest(fail = { callback.fail("Invalid auth") }) {</div><div class='add'>+ if (cancelled) return@fbRequest callback.fail("Cancelled")</div><div class='add'>+ val url = getFullSizedImage(fbid).invoke() ?: return@fbRequest callback.fail("Null url")</div><div class='add'>+ if (cancelled) return@fbRequest callback.fail("Cancelled")</div><div class='add'>+ urlCall = Request.Builder().url(url).get().call()</div><div class='add'>+</div><div class='add'>+ inputStream = try {</div><div class='add'>+ urlCall?.execute()?.body()?.byteStream()</div><div class='add'>+ } catch (e: IOException) {</div><div class='add'>+ null</div><div class='add'>+ }</div><div class='add'>+</div><div class='add'>+ callback.onDataReady(inputStream)</div><div class='add'>+ }</div><div class='add'>+ }</div><div class='add'>+</div><div class='add'>+ override fun cleanup() {</div><div class='add'>+ try {</div><div class='add'>+ inputStream?.close()</div><div class='add'>+ } catch (e: IOException) {</div><div class='add'>+ } finally {</div><div class='add'>+ inputStream = null</div><div class='add'>+ }</div><div class='add'>+ }</div><div class='add'>+</div><div class='add'>+ override fun cancel() {</div><div class='add'>+ cancelled = true</div><div class='add'>+ urlCall?.cancel()</div><div class='add'>+ urlCall = null</div><div class='add'>+ cleanup()</div><div class='add'>+ }</div><div class='add'>+}</div><div class='head'>diff --git a/app/src/main/kotlin/com/pitchedapps/frost/facebook/requests/Notifications.kt b/app/src/main/kotlin/com/pitchedapps/frost/facebook/requests/Notifications.kt<br/>new file mode 100644<br/>index 00000000..82a9364b<br/>--- /dev/null<br/>+++ b/<a href='/frost/tree/app/src/main/kotlin/com/pitchedapps/frost/facebook/requests/Notifications.kt?h=v1.7.5&id=041bafcceadbd5203e95f2692899ac903dd2e883'>app/src/main/kotlin/com/pitchedapps/frost/facebook/requests/Notifications.kt</a></div><div class='hunk'>@@ -0,0 +1,27 @@</div><div class='add'>+package com.pitchedapps.frost.facebook.requests</div><div class='add'>+</div><div class='add'>+import com.pitchedapps.frost.facebook.FB_URL_BASE</div><div class='add'>+</div><div class='add'>+/**</div><div class='add'>+ * Created by Allan Wang on 29/12/17.</div><div class='add'>+ */</div><div class='add'>+fun RequestAuth.markNotificationRead(notifId: Long): FrostRequest<Boolean> {</div><div class='add'>+</div><div class='add'>+ val body = listOf(</div><div class='add'>+ "click_type" to "notification_click",</div><div class='add'>+ "id" to notifId,</div><div class='add'>+ "target_id" to "null",</div><div class='add'>+ "fb_dtsg" to fb_dtsg,</div><div class='add'>+ "__user" to userId</div><div class='add'>+ ).withEmptyData("m_sess", "__dyn", "__req", "__ajax__")</div><div class='add'>+</div><div class='add'>+ return frostRequest(::executeForNoError) {</div><div class='add'>+ url("${FB_URL_BASE}a/jewel_notifications_log.php")</div><div class='add'>+ post(body.toForm())</div><div class='add'>+ }</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+fun RequestAuth.markNotificationsRead(vararg notifId: Long) =</div><div class='add'>+ notifId.toTypedArray().zip<Long, Boolean, Boolean>(</div><div class='add'>+ { it.all { it } },</div><div class='add'>+ { markNotificationRead(it).invoke() }) \ No newline at end of file</div><div class='head'>diff --git a/app/src/main/kotlin/com/pitchedapps/frost/services/FrostRequestService.kt b/app/src/main/kotlin/com/pitchedapps/frost/services/FrostRequestService.kt<br/>index 74a8b98d..2b407b7d 100644<br/>--- a/<a href='/frost/tree/app/src/main/kotlin/com/pitchedapps/frost/services/FrostRequestService.kt?h=v1.7.5&id=32e6b5be0e662bbac22806bcc87259fd1a2e2ed0'>app/src/main/kotlin/com/pitchedapps/frost/services/FrostRequestService.kt</a><br/>+++ b/<a href='/frost/tree/app/src/main/kotlin/com/pitchedapps/frost/services/FrostRequestService.kt?h=v1.7.5&id=041bafcceadbd5203e95f2692899ac903dd2e883'>app/src/main/kotlin/com/pitchedapps/frost/services/FrostRequestService.kt</a></div><div class='hunk'>@@ -9,9 +9,9 @@ import android.content.Context</div><div class='ctx'> import android.content.Intent</div><div class='ctx'> import android.os.BaseBundle</div><div class='ctx'> import android.os.PersistableBundle</div><div class='del'>-import com.pitchedapps.frost.facebook.RequestAuth</div><div class='del'>-import com.pitchedapps.frost.facebook.fbRequest</div><div class='del'>-import com.pitchedapps.frost.facebook.markNotificationRead</div><div class='add'>+import com.pitchedapps.frost.facebook.requests.RequestAuth</div><div class='add'>+import com.pitchedapps.frost.facebook.requests.fbRequest</div><div class='add'>+import com.pitchedapps.frost.facebook.requests.markNotificationRead</div><div class='ctx'> import com.pitchedapps.frost.utils.EnumBundle</div><div class='ctx'> import com.pitchedapps.frost.utils.EnumBundleCompanion</div><div class='ctx'> import com.pitchedapps.frost.utils.EnumCompanion</div><div class='head'>diff --git a/app/src/test/kotlin/com/pitchedapps/frost/MiscTest.kt b/app/src/test/kotlin/com/pitchedapps/frost/MiscTest.kt<br/>index 54792086..a565aa7d 100644<br/>--- a/<a href='/frost/tree/app/src/test/kotlin/com/pitchedapps/frost/MiscTest.kt?h=v1.7.5&id=32e6b5be0e662bbac22806bcc87259fd1a2e2ed0'>app/src/test/kotlin/com/pitchedapps/frost/MiscTest.kt</a><br/>+++ b/<a href='/frost/tree/app/src/test/kotlin/com/pitchedapps/frost/MiscTest.kt?h=v1.7.5&id=041bafcceadbd5203e95f2692899ac903dd2e883'>app/src/test/kotlin/com/pitchedapps/frost/MiscTest.kt</a></div><div class='hunk'>@@ -1,6 +1,6 @@</div><div class='ctx'> package com.pitchedapps.frost</div><div class='ctx'> </div><div class='del'>-import com.pitchedapps.frost.facebook.zip</div><div class='add'>+import com.pitchedapps.frost.facebook.requests.zip</div><div class='ctx'> import com.pitchedapps.frost.injectors.CssHider</div><div class='ctx'> import org.junit.Test</div><div class='ctx'> import kotlin.test.assertTrue</div><div class='head'>diff --git a/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRegexTest.kt b/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRegexTest.kt<br/>index da815b34..a79ccf3f 100644<br/>--- a/<a href='/frost/tree/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRegexTest.kt?h=v1.7.5&id=32e6b5be0e662bbac22806bcc87259fd1a2e2ed0'>app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRegexTest.kt</a><br/>+++ b/<a href='/frost/tree/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRegexTest.kt?h=v1.7.5&id=041bafcceadbd5203e95f2692899ac903dd2e883'>app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRegexTest.kt</a></div><div class='hunk'>@@ -41,6 +41,12 @@ class FbRegexTest {</div><div class='ctx'> assertEquals(id, FB_MESSAGE_NOTIF_ID_MATCHER.find(data)[1]?.toLong(), "thread_fbid mismatch")</div><div class='ctx'> val userData = "threadlist_row_other_user_fbid_${id}thread_fbid_"</div><div class='ctx'> assertEquals(id, FB_MESSAGE_NOTIF_ID_MATCHER.find(userData)[1]?.toLong(), "user_fbid mismatch")</div><div class='add'>+ }</div><div class='ctx'> </div><div class='add'>+ @Test</div><div class='add'>+ fun jsonUrlRegex() {</div><div class='add'>+ val url = "https://www.hello.world"</div><div class='add'>+ val data = "\"uri\":\"$url\"}"</div><div class='add'>+ assertEquals(url, FB_JSON_URL_MATCHER.find(data)[1])</div><div class='ctx'> }</div><div class='ctx'> } \ No newline at end of file</div><div class='head'>diff --git a/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRequestTest.kt b/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRequestTest.kt<br/>index c3b19727..93f09fc6 100644<br/>--- a/<a href='/frost/tree/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRequestTest.kt?h=v1.7.5&id=32e6b5be0e662bbac22806bcc87259fd1a2e2ed0'>app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRequestTest.kt</a><br/>+++ b/<a href='/frost/tree/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRequestTest.kt?h=v1.7.5&id=041bafcceadbd5203e95f2692899ac903dd2e883'>app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRequestTest.kt</a></div><div class='hunk'>@@ -1,5 +1,8 @@</div><div class='ctx'> package com.pitchedapps.frost.facebook</div><div class='ctx'> </div><div class='add'>+import com.pitchedapps.frost.facebook.requests.getAuth</div><div class='add'>+import com.pitchedapps.frost.facebook.requests.getFullSizedImage</div><div class='add'>+import com.pitchedapps.frost.facebook.requests.markNotificationRead</div><div class='ctx'> import com.pitchedapps.frost.internal.AUTH</div><div class='ctx'> import com.pitchedapps.frost.internal.COOKIE</div><div class='ctx'> import com.pitchedapps.frost.internal.USER_ID</div><div class='hunk'>@@ -48,4 +51,12 @@ class FbRequestTest {</div><div class='ctx'> AUTH.markNotificationRead(notifId).call.assertNoError()</div><div class='ctx'> }</div><div class='ctx'> </div><div class='add'>+ @Test</div><div class='add'>+ fun fullSizeImage() {</div><div class='add'>+ val fbid = 10155966932992838L // google's current cover photo</div><div class='add'>+ val url = AUTH.getFullSizedImage(fbid).invoke()</div><div class='add'>+ println(url)</div><div class='add'>+ assertTrue(url?.startsWith("https://scontent") == true)</div><div class='add'>+ }</div><div class='add'>+</div><div class='ctx'> } \ No newline at end of file</div><div class='head'>diff --git a/app/src/test/kotlin/com/pitchedapps/frost/internal/Internal.kt b/app/src/test/kotlin/com/pitchedapps/frost/internal/Internal.kt<br/>index ed88453a..fb2b2a45 100644<br/>--- a/<a href='/frost/tree/app/src/test/kotlin/com/pitchedapps/frost/internal/Internal.kt?h=v1.7.5&id=32e6b5be0e662bbac22806bcc87259fd1a2e2ed0'>app/src/test/kotlin/com/pitchedapps/frost/internal/Internal.kt</a><br/>+++ b/<a href='/frost/tree/app/src/test/kotlin/com/pitchedapps/frost/internal/Internal.kt?h=v1.7.5&id=041bafcceadbd5203e95f2692899ac903dd2e883'>app/src/test/kotlin/com/pitchedapps/frost/internal/Internal.kt</a></div><div class='hunk'>@@ -1,6 +1,8 @@</div><div class='ctx'> package com.pitchedapps.frost.internal</div><div class='ctx'> </div><div class='ctx'> import com.pitchedapps.frost.facebook.*</div><div class='add'>+import com.pitchedapps.frost.facebook.requests.RequestAuth</div><div class='add'>+import com.pitchedapps.frost.facebook.requests.getAuth</div><div class='ctx'> import com.pitchedapps.frost.utils.frostJsoup</div><div class='ctx'> import org.junit.Assume</div><div class='ctx'> import java.io.File</div></td></tr></table></div> <!-- class=content --> <div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit v1.2.3</a> (<a href='https://git-scm.com/'>git 2.39.1</a>) at 2024-06-29 07:02:58 +0000</div> </div> <!-- id=cgit --> </body> </html>