From f2641adfd20a868931cf2e3c3956dd8d01ee096a Mon Sep 17 00:00:00 2001 From: tarsin Date: Fri, 28 Apr 2023 09:34:30 +0800 Subject: [PATCH] Cleanup EhEngine --- .../com/hippo/ehviewer/client/EhEngine.kt | 59 +++++-------------- .../hippo/ehviewer/client/EhRequestBuilder.kt | 5 +- .../ehviewer/client/data/ListUrlBuilder.kt | 3 - .../ehviewer/ui/scene/GalleryListScene.kt | 1 - 4 files changed, 20 insertions(+), 48 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhEngine.kt b/app/src/main/java/com/hippo/ehviewer/client/EhEngine.kt index dfac98bd8..814c729dd 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/EhEngine.kt +++ b/app/src/main/java/com/hippo/ehviewer/client/EhEngine.kt @@ -58,7 +58,6 @@ import okhttp3.MediaType.Companion.toMediaType import okhttp3.MultipartBody import okhttp3.Request import okhttp3.RequestBody.Companion.asRequestBody -import okhttp3.RequestBody.Companion.toRequestBody import okhttp3.executeAsync import org.json.JSONArray import org.jsoup.Jsoup @@ -140,7 +139,7 @@ object EhEngine { val url = EhUrl.API_SIGN_IN val origin = "https://forums.e-hentai.org" return ehRequest(url, referer, origin) { - formbody { + form { add("referer", referer) add("b", "") add("bt", "") @@ -279,7 +278,7 @@ object EhEngine { id: String?, ): GalleryCommentList { return ehRequest(url, url, EhUrl.origin) { - formbody { + form { if (id == null) { add("commenttext_new", comment) } else { @@ -342,7 +341,7 @@ object EhEngine { } val url = EhUrl.getAddFavorites(gid, token) return ehRequest(url, url, EhUrl.origin) { - formbody { + form { add("favcat", catStr) add("favnote", note ?: "") // submit=Add+to+Favorites is not necessary, just use submit=Apply+Changes all the time @@ -386,7 +385,7 @@ object EhEngine { } } return ehRequest(url, url, EhUrl.origin) { - formbody { + form { add("ddact", catStr) for (gid in gidArray) { add("modifygids[]", gid.toString()) @@ -431,7 +430,7 @@ object EhEngine { val url = EhUrl.getDownloadArchive(gid, token, or) val referer = EhUrl.getGalleryDetailUrl(gid, token) val request = ehRequest(url, referer, EhUrl.origin) { - formbody { + form { if (isHAtH) { add("hathdl_xres", res) } else { @@ -475,7 +474,7 @@ object EhEngine { suspend fun resetImageLimits(): HomeParser.Limits? { return ehRequest(EhUrl.URL_HOME) { - formbody { + form { add("act", "limits") add("reset", "Reset Limit") } @@ -556,42 +555,16 @@ object EhEngine { image: File, uss: Boolean, osc: Boolean, - se: Boolean, ): GalleryListParser.Result { - val builder = MultipartBody.Builder() - builder.setType(MultipartBody.FORM) - builder.addPart( - Headers.headersOf( - "Content-Disposition", - "form-data; name=\"sfile\"; filename=\"a.jpg\"", - ), - image.asRequestBody(MEDIA_TYPE_JPEG), - ) - if (uss) { - builder.addPart( - Headers.headersOf("Content-Disposition", "form-data; name=\"fs_similar\""), - "on".toRequestBody(), - ) - } - if (osc) { - builder.addPart( - Headers.headersOf("Content-Disposition", "form-data; name=\"fs_covers\""), - "on".toRequestBody(), - ) - } - if (se) { - builder.addPart( - Headers.headersOf("Content-Disposition", "form-data; name=\"fs_exp\""), - "on".toRequestBody(), - ) - } - builder.addPart( - Headers.headersOf("Content-Disposition", "form-data; name=\"f_sfile\""), - "File Search".toRequestBody(), - ) - return ehRequest(EhUrl.imageSearchUrl, EhUrl.referer, EhUrl.origin) { post(builder.build()) } - .executeAndParsingWith(GalleryListParser::parse) - .apply { fillGalleryList(galleryInfoList, EhUrl.imageSearchUrl, true) } + return ehRequest(EhUrl.imageSearchUrl, EhUrl.referer, EhUrl.origin) { + multipart { + setType(MultipartBody.FORM) + addFormDataPart("sfile", "a.jpg", image.asRequestBody(MEDIA_TYPE_JPEG)) + if (uss) addFormDataPart("fs_similar", "on") + if (osc) addFormDataPart("fs_covers", "on") + addFormDataPart("f_sfile", "File Search") + } + }.executeAndParsingWith(GalleryListParser::parse).apply { fillGalleryList(galleryInfoList, EhUrl.imageSearchUrl, true) } } suspend fun getGalleryPage( @@ -606,7 +579,7 @@ object EhEngine { suspend fun getGalleryPageApi( gid: Long, index: Int, - pToken: String?, + pToken: String, showKey: String?, previousPToken: String?, ): GalleryPageApiParser.Result { diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhRequestBuilder.kt b/app/src/main/java/com/hippo/ehviewer/client/EhRequestBuilder.kt index 59ca12863..2f4c0c023 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/EhRequestBuilder.kt +++ b/app/src/main/java/com/hippo/ehviewer/client/EhRequestBuilder.kt @@ -19,6 +19,7 @@ import io.ktor.http.HttpMessageBuilder import okhttp3.FormBody import okhttp3.MediaType import okhttp3.MediaType.Companion.toMediaType +import okhttp3.MultipartBody import okhttp3.Request import okhttp3.RequestBody.Companion.toRequestBody import org.json.JSONObject @@ -31,7 +32,9 @@ inline fun ehRequest(url: String, referer: String? = null, origin: String? = nul origin?.let { addHeader("Origin", it) } }.apply(builder).build() -inline fun Request.Builder.formbody(builder: FormBody.Builder.() -> Unit) = post(FormBody.Builder().apply(builder).build()) +inline fun Request.Builder.form(builder: FormBody.Builder.() -> Unit) = post(FormBody.Builder().apply(builder).build()) + +inline fun Request.Builder.multipart(builder: MultipartBody.Builder.() -> Unit) = post(MultipartBody.Builder().apply(builder).build()) val MEDIA_TYPE_JSON: MediaType = "application/json; charset=utf-8".toMediaType() 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 93c4f569e..ef0a5269c 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 @@ -47,7 +47,6 @@ data class ListUrlBuilder( var imagePath: String? = null, var isUseSimilarityScan: Boolean = false, var isOnlySearchCovers: Boolean = false, - var isShowExpunged: Boolean = false, ) : Parcelable { fun reset() { @@ -64,7 +63,6 @@ data class ListUrlBuilder( imagePath = null isUseSimilarityScan = false isOnlySearchCovers = false - isShowExpunged = false mSHash = null } @@ -94,7 +92,6 @@ data class ListUrlBuilder( imagePath = null isUseSimilarityScan = false isOnlySearchCovers = false - isShowExpunged = false } fun toQuickSearch(): QuickSearch { diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt index f92165b78..0bca16df3 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt @@ -1300,7 +1300,6 @@ class GalleryListScene : File(StringUtils.avoidNull(mUrlBuilder.imagePath)), mUrlBuilder.isUseSimilarityScan, mUrlBuilder.isOnlySearchCovers, - mUrlBuilder.isShowExpunged, ) } else { val url = mUrlBuilder.build()