Drop UrlBuilder

This commit is contained in:
tarsin committed 2023-06-24 16:15:52 +08:00
1 parent 9dfc1324ad
commit a77a1fd3e1
5 files changed
+33 -58

No files matched your search

@@ -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) }
@@ -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) {
@@ -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)
@@ -1,6 +0,0 @@
package com.hippo.ehviewer.network
import okhttp3.HttpUrl
@JvmInline
value class UrlBuilder(val url: HttpUrl.Builder)
@@ -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()
}