From a77a1fd3e11985dee05b70c4bb01061530b0632b Mon Sep 17 00:00:00 2001 From: tarsin Date: Sat, 24 Jun 2023 16:15:52 +0800 Subject: [PATCH] Drop UrlBuilder --- .../java/com/hippo/ehviewer/client/EhUrl.kt | 18 ++----- .../ehviewer/client/data/FavListUrlBuilder.kt | 7 ++- .../ehviewer/client/data/ListUrlBuilder.kt | 53 ++++++++----------- .../com/hippo/ehviewer/network/UrlBuilder.kt | 6 --- .../hippo/ehviewer/ui/scene/FavoritesScene.kt | 7 +-- 5 files changed, 33 insertions(+), 58 deletions(-) delete mode 100644 app/src/main/java/com/hippo/ehviewer/network/UrlBuilder.kt diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhUrl.kt b/app/src/main/java/com/hippo/ehviewer/client/EhUrl.kt index f2f6accff..076bf7532 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/EhUrl.kt +++ b/app/src/main/java/com/hippo/ehviewer/client/EhUrl.kt @@ -26,14 +26,14 @@ object EhUrl { const val DOMAIN_LOFI = "lofi.e-hentai.org" const val HOST_EX = "https://$DOMAIN_EX/" const val API_EX = HOST_EX + "api.php" + const val FAV_PATH = "favorites.php" + const val WATCHED_PATH = "watched" const val URL_UCONFIG_EX = HOST_EX + "uconfig.php" const val URL_MY_TAGS_EX = HOST_EX + "mytags" - const val URL_WATCHED_EX = HOST_EX + "watched" const val HOST_E = "https://$DOMAIN_E/" const val API_E = HOST_E + "api.php" const val URL_UCONFIG_E = HOST_E + "uconfig.php" const val URL_MY_TAGS_E = HOST_E + "mytags" - const val URL_WATCHED_E = HOST_E + "watched" const val API_SIGN_IN = "https://forums.e-hentai.org/index.php?act=Login&CODE=01" const val URL_POPULAR_E = "https://e-hentai.org/popular" const val URL_POPULAR_EX = "https://exhentai.org/popular" @@ -113,26 +113,17 @@ object EhUrl { else -> URL_IMAGE_SEARCH_E } - val watchedUrl: String - get() = when (Settings.gallerySite) { - SITE_E -> URL_WATCHED_E - SITE_EX -> URL_WATCHED_EX - else -> URL_WATCHED_E - } - fun getGalleryDetailUrl(gid: Long, token: String?): String { return getGalleryDetailUrl(gid, token, 0, false) } - fun getGalleryDetailUrl(gid: Long, token: String?, index: Int, allComment: Boolean) = httpsUrl { - host(domain) + fun getGalleryDetailUrl(gid: Long, token: String?, index: Int, allComment: Boolean) = ehUrl { addPathSegments("g/$gid/$token/") if (index != 0) addEncodedQueryParameter("p", index.toString()) if (allComment) addEncodedQueryParameter("hc", 1.toString()) }.toString() - fun getGalleryMultiPageViewerUrl(gid: Long, token: String) = httpsUrl { - host(domain) + fun getGalleryMultiPageViewerUrl(gid: Long, token: String) = ehUrl { addPathSegments("mpv/$gid/$token/") }.toString() @@ -154,3 +145,4 @@ object EhUrl { } inline fun httpsUrl(builder: HttpUrl.Builder.() -> Unit) = HttpUrl.Builder().apply(builder).scheme("https").build() +inline fun ehUrl(builder: HttpUrl.Builder.() -> Unit) = httpsUrl { apply(builder).host(EhUrl.domain) } diff --git a/app/src/main/java/com/hippo/ehviewer/client/data/FavListUrlBuilder.kt b/app/src/main/java/com/hippo/ehviewer/client/data/FavListUrlBuilder.kt index d707764f6..5cc2b31ef 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/data/FavListUrlBuilder.kt +++ b/app/src/main/java/com/hippo/ehviewer/client/data/FavListUrlBuilder.kt @@ -17,7 +17,7 @@ package com.hippo.ehviewer.client.data import android.os.Parcelable import com.hippo.ehviewer.client.EhUrl -import com.hippo.ehviewer.client.httpsUrl +import com.hippo.ehviewer.client.ehUrl import com.hippo.ehviewer.util.encodeUTF8 import kotlinx.parcelize.Parcelize @@ -34,9 +34,8 @@ class FavListUrlBuilder( mPrev = index.takeUnless { isNext } } - fun build() = httpsUrl { - host(EhUrl.domain) - addPathSegment("favorites.php") + fun build() = ehUrl { + addPathSegment(EhUrl.FAV_PATH) if (isValidFavCat(favCat)) { addEncodedQueryParameter("favcat", favCat.toString()) } else if (favCat == FAV_CAT_ALL) { diff --git a/app/src/main/java/com/hippo/ehviewer/client/data/ListUrlBuilder.kt b/app/src/main/java/com/hippo/ehviewer/client/data/ListUrlBuilder.kt index e65506ad2..4b3f35995 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/data/ListUrlBuilder.kt +++ b/app/src/main/java/com/hippo/ehviewer/client/data/ListUrlBuilder.kt @@ -19,13 +19,12 @@ import android.os.Parcelable import androidx.annotation.IntDef import com.hippo.ehviewer.client.EhUrl import com.hippo.ehviewer.client.EhUtils +import com.hippo.ehviewer.client.ehUrl import com.hippo.ehviewer.dao.QuickSearch -import com.hippo.ehviewer.network.UrlBuilder import com.hippo.ehviewer.ui.legacy.AdvanceSearchTable import com.hippo.ehviewer.util.encodeUTF8 import com.hippo.ehviewer.yorozuya.toIntOrDefault import kotlinx.parcelize.Parcelize -import okhttp3.HttpUrl.Companion.toHttpUrl import java.io.UnsupportedEncodingException import java.net.URLDecoder @@ -271,72 +270,66 @@ data class ListUrlBuilder( fun build(): String { return when (mode) { - MODE_NORMAL, MODE_SUBSCRIPTION -> { - val url: String = if (mode == MODE_NORMAL) { - EhUrl.host - } else { - EhUrl.watchedUrl + MODE_NORMAL, MODE_SUBSCRIPTION -> ehUrl { + if (mode == MODE_SUBSCRIPTION) addPathSegment(EhUrl.WATCHED_PATH) + if (category != EhUtils.NONE) { + addEncodedQueryParameter("f_cats", (category.inv() and EhUtils.ALL_CATEGORY).toString()) } - val ub = UrlBuilder(url.toHttpUrl().newBuilder()) - if (this.category != EhUtils.NONE) { - ub.url.addEncodedQueryParameter("f_cats", (category.inv() and EhUtils.ALL_CATEGORY).toString()) - } - hash?.let { ub.url.addEncodedQueryParameter("f_shash", it) } - mJumpTo?.let { ub.url.addEncodedQueryParameter("seek", it) } - mPrev?.let { ub.url.addEncodedQueryParameter("prev", it) } - mNext?.let { ub.url.addEncodedQueryParameter("next", it) } + hash?.let { addEncodedQueryParameter("f_shash", it) } + mJumpTo?.let { addEncodedQueryParameter("seek", it) } + mPrev?.let { addEncodedQueryParameter("prev", it) } + mNext?.let { addEncodedQueryParameter("next", it) } // Search key // the settings of ub:UrlBuilder may be overwritten by following Advance search mKeyword?.split('|')?.forEachIndexed { idx, kwd -> val keyword = kwd.trim { it <= ' ' } when (idx) { - 0 -> keyword.takeIf { it.isNotEmpty() }?.let { ub.url.addEncodedQueryParameter("f_search", encodeUTF8(it)) } + 0 -> keyword.takeIf { it.isNotEmpty() }?.let { addEncodedQueryParameter("f_search", encodeUTF8(it)) } else -> keyword.indexOf(':').takeIf { it >= 0 }?.run { val key = keyword.substring(0, this).trim { it <= ' ' } val value = keyword.substring(this + 1).trim { it <= ' ' } - ub.url.addEncodedQueryParameter(key, encodeUTF8(value)) + addEncodedQueryParameter(key, encodeUTF8(value)) } } } // Advance search if (advanceSearch != -1) { - ub.url.addEncodedQueryParameter("advsearch", "1") + addEncodedQueryParameter("advsearch", "1") if (advanceSearch and AdvanceSearchTable.SH != 0) { - ub.url.addEncodedQueryParameter("f_sh", "on") + addEncodedQueryParameter("f_sh", "on") } if (advanceSearch and AdvanceSearchTable.STO != 0) { - ub.url.addEncodedQueryParameter("f_sto", "on") + addEncodedQueryParameter("f_sto", "on") } if (advanceSearch and AdvanceSearchTable.SFL != 0) { - ub.url.addEncodedQueryParameter("f_sfl", "on") + addEncodedQueryParameter("f_sfl", "on") } if (advanceSearch and AdvanceSearchTable.SFU != 0) { - ub.url.addEncodedQueryParameter("f_sfu", "on") + addEncodedQueryParameter("f_sfu", "on") } if (advanceSearch and AdvanceSearchTable.SFT != 0) { - ub.url.addEncodedQueryParameter("f_sft", "on") + addEncodedQueryParameter("f_sft", "on") } // Set min star if (minRating != -1) { - ub.url.addEncodedQueryParameter("f_sr", "on") - ub.url.addEncodedQueryParameter("f_srdd", minRating.toString()) + addEncodedQueryParameter("f_sr", "on") + addEncodedQueryParameter("f_srdd", minRating.toString()) } // Pages if (pageFrom != -1 || pageTo != -1) { - ub.url.addEncodedQueryParameter("f_sp", "on") - ub.url.addEncodedQueryParameter( + addEncodedQueryParameter("f_sp", "on") + addEncodedQueryParameter( "f_spf", (if (pageFrom != -1) pageFrom.toString() else "").toString(), ) - ub.url.addEncodedQueryParameter( + addEncodedQueryParameter( "f_spt", (if (pageTo != -1) pageTo.toString() else "").toString(), ) } } - ub.url.toString() - } + }.toString() MODE_UPLOADER -> { val sb = StringBuilder(EhUrl.host) diff --git a/app/src/main/java/com/hippo/ehviewer/network/UrlBuilder.kt b/app/src/main/java/com/hippo/ehviewer/network/UrlBuilder.kt deleted file mode 100644 index 89cf03ea0..000000000 --- a/app/src/main/java/com/hippo/ehviewer/network/UrlBuilder.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.hippo.ehviewer.network - -import okhttp3.HttpUrl - -@JvmInline -value class UrlBuilder(val url: HttpUrl.Builder) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.kt index 8392d5697..3d50772e3 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.kt @@ -45,7 +45,7 @@ import com.hippo.ehviewer.client.EhEngine import com.hippo.ehviewer.client.EhUrl import com.hippo.ehviewer.client.data.FavListUrlBuilder import com.hippo.ehviewer.client.data.GalleryInfo -import com.hippo.ehviewer.client.httpsUrl +import com.hippo.ehviewer.client.ehUrl import com.hippo.ehviewer.client.parser.FavoritesParser import com.hippo.ehviewer.databinding.DrawerListRvBinding import com.hippo.ehviewer.databinding.ItemDrawerFavoritesBinding @@ -821,10 +821,7 @@ class FavoritesScene : mModifyGiList.clear() val url: String = if (local) { // Local fav is shown now, but operation need be done for cloud fav - httpsUrl { - host(EhUrl.domain) - addPathSegments("favorites.php") - }.toString() + ehUrl { addPathSegments(EhUrl.FAV_PATH) }.toString() } else { mUrlBuilder!!.build() }