Cleanup Okhttp API usage
This commit is contained in:
1 parent
ed673b5bc1
commit
5f14919755
4 files changed
+46
-104
No files matched your search
@@ -125,8 +125,8 @@ private fun rethrowExactly(code: Int, headers: Headers, body: String, e: Throwab
|
||||
throw e
|
||||
}
|
||||
|
||||
private suspend inline fun <T> Request.Builder.executeAndParsingWith(block: String.() -> T): T {
|
||||
return okHttpClient.newCall(this.build()).executeAsync().use { response ->
|
||||
private suspend inline fun <T> Request.executeAndParsingWith(block: String.() -> T): T {
|
||||
return okHttpClient.newCall(this).executeAsync().use { response ->
|
||||
val body = response.body.string()
|
||||
runCatching {
|
||||
block(body)
|
||||
@@ -149,8 +149,7 @@ object EhEngine {
|
||||
val url = EhUrl.API_SIGN_IN
|
||||
val origin = "https://forums.e-hentai.org"
|
||||
Log.d(TAG, url)
|
||||
return EhRequestBuilder(url, referer, origin)
|
||||
.post(builder.build())
|
||||
return ehRequest(url, referer, origin) { post(builder.build()) }
|
||||
.executeAndParsingWith(SignInParser::parse)
|
||||
}
|
||||
|
||||
@@ -196,7 +195,7 @@ object EhEngine {
|
||||
suspend fun getGalleryList(url: String): GalleryListParser.Result {
|
||||
val referer = EhUrl.referer
|
||||
Log.d(TAG, url)
|
||||
return EhRequestBuilder(url, referer).executeAndParsingWith(GalleryListParser::parse)
|
||||
return ehRequest(url, referer).executeAndParsingWith(GalleryListParser::parse)
|
||||
.apply { fillGalleryList(galleryInfoList, url, true) }
|
||||
}
|
||||
|
||||
@@ -240,17 +239,14 @@ object EhEngine {
|
||||
val url = EhUrl.apiUrl
|
||||
val origin = EhUrl.origin
|
||||
Log.d(TAG, url)
|
||||
return EhRequestBuilder(url, referer, origin)
|
||||
.post(json.toString().toRequestBody(MEDIA_TYPE_JSON))
|
||||
.executeAndParsingWith {
|
||||
GalleryApiParser.parse(this, galleryInfoList)
|
||||
}
|
||||
return ehRequest(url, referer, origin) { post(json.toString().toRequestBody(MEDIA_TYPE_JSON)) }
|
||||
.executeAndParsingWith { GalleryApiParser.parse(this, galleryInfoList) }
|
||||
}
|
||||
|
||||
suspend fun getGalleryDetail(url: String): GalleryDetail {
|
||||
val referer = EhUrl.referer
|
||||
Log.d(TAG, url)
|
||||
return EhRequestBuilder(url, referer).executeAndParsingWith {
|
||||
return ehRequest(url, referer).executeAndParsingWith {
|
||||
EventPaneParser.parse(this)?.let {
|
||||
Settings.lastDawnDay = today
|
||||
showEventNotification(it)
|
||||
@@ -262,7 +258,7 @@ object EhEngine {
|
||||
suspend fun getPreviewList(url: String): Pair<List<GalleryPreview>, Int> {
|
||||
val referer = EhUrl.referer
|
||||
Log.d(TAG, url)
|
||||
return EhRequestBuilder(url, referer).executeAndParsingWith {
|
||||
return ehRequest(url, referer).executeAndParsingWith {
|
||||
GalleryDetailParser.parsePreviewList(this) to
|
||||
GalleryDetailParser.parsePreviewPages(this)
|
||||
}
|
||||
@@ -288,8 +284,7 @@ object EhEngine {
|
||||
val referer = EhUrl.getGalleryDetailUrl(gid, token)
|
||||
val origin = EhUrl.origin
|
||||
Log.d(TAG, url)
|
||||
return EhRequestBuilder(url, referer, origin)
|
||||
.post(requestBody)
|
||||
return ehRequest(url, referer, origin) { post(requestBody) }
|
||||
.executeAndParsingWith(RateGalleryParser::parse)
|
||||
}
|
||||
|
||||
@@ -307,8 +302,7 @@ object EhEngine {
|
||||
}
|
||||
val origin = EhUrl.origin
|
||||
Log.d(TAG, url!!)
|
||||
return EhRequestBuilder(url, url, origin)
|
||||
.post(builder.build())
|
||||
return ehRequest(url, url, origin) { post(builder.build()) }
|
||||
.executeAndParsingWith {
|
||||
val document = Jsoup.parse(this)
|
||||
val elements = document.select("#chd + p")
|
||||
@@ -337,8 +331,7 @@ object EhEngine {
|
||||
val referer = EhUrl.referer
|
||||
val origin = EhUrl.origin
|
||||
Log.d(TAG, url)
|
||||
return EhRequestBuilder(url, referer, origin)
|
||||
.post(requestBody)
|
||||
return ehRequest(url, referer, origin) { post(requestBody) }
|
||||
.executeAndParsingWith(GalleryTokenApiParser::parse)
|
||||
}
|
||||
|
||||
@@ -347,7 +340,7 @@ object EhEngine {
|
||||
): FavoritesParser.Result {
|
||||
val referer = EhUrl.referer
|
||||
Log.d(TAG, url)
|
||||
return EhRequestBuilder(url, referer).executeAndParsingWith(FavoritesParser::parse)
|
||||
return ehRequest(url, referer).executeAndParsingWith(FavoritesParser::parse)
|
||||
.apply { fillGalleryList(galleryInfoList, url, false) }
|
||||
}
|
||||
|
||||
@@ -383,8 +376,7 @@ object EhEngine {
|
||||
val url = EhUrl.getAddFavorites(gid, token)
|
||||
val origin = EhUrl.origin
|
||||
Log.d(TAG, url)
|
||||
return EhRequestBuilder(url, url, origin)
|
||||
.post(builder.build())
|
||||
return ehRequest(url, url, origin) { post(builder.build()) }
|
||||
.executeAndParsingWith { }
|
||||
}
|
||||
|
||||
@@ -429,8 +421,7 @@ object EhEngine {
|
||||
builder.add("apply", "Apply")
|
||||
val origin = EhUrl.origin
|
||||
Log.d(TAG, url)
|
||||
return EhRequestBuilder(url, url, origin)
|
||||
.post(builder.build())
|
||||
return ehRequest(url, url, origin) { post(builder.build()) }
|
||||
.executeAndParsingWith(FavoritesParser::parse)
|
||||
.apply { fillGalleryList(galleryInfoList, url, false) }
|
||||
}
|
||||
@@ -442,7 +433,7 @@ object EhEngine {
|
||||
): List<TorrentParser.Result> {
|
||||
val referer = EhUrl.getGalleryDetailUrl(gid, token)
|
||||
Log.d(TAG, url)
|
||||
return EhRequestBuilder(url, referer).executeAndParsingWith(TorrentParser::parse)
|
||||
return ehRequest(url, referer).executeAndParsingWith(TorrentParser::parse)
|
||||
}
|
||||
|
||||
suspend fun getArchiveList(
|
||||
@@ -452,7 +443,7 @@ object EhEngine {
|
||||
): ArchiveParser.Result {
|
||||
val referer = EhUrl.getGalleryDetailUrl(gid, token)
|
||||
Log.d(TAG, url)
|
||||
return EhRequestBuilder(url, referer).executeAndParsingWith(ArchiveParser::parse)!!
|
||||
return ehRequest(url, referer).executeAndParsingWith(ArchiveParser::parse)!!
|
||||
.apply { funds = funds ?: getFunds() }
|
||||
}
|
||||
|
||||
@@ -484,8 +475,7 @@ object EhEngine {
|
||||
val referer = EhUrl.getGalleryDetailUrl(gid, token)
|
||||
val origin = EhUrl.origin
|
||||
Log.d(TAG, url)
|
||||
val request = EhRequestBuilder(url, referer, origin)
|
||||
.post(builder.build())
|
||||
val request = ehRequest(url, referer, origin) { builder.build() }
|
||||
var result = request.executeAndParsingWith(ArchiveParser::parseArchiveUrl)
|
||||
if (!isHAtH) {
|
||||
if (result == null) {
|
||||
@@ -504,13 +494,13 @@ object EhEngine {
|
||||
private suspend fun getFunds(): HomeParser.Funds {
|
||||
val url = EhUrl.URL_FUNDS
|
||||
Log.d(TAG, url)
|
||||
return EhRequestBuilder(url).executeAndParsingWith(HomeParser::parseFunds)
|
||||
return ehRequest(url).executeAndParsingWith(HomeParser::parseFunds)
|
||||
}
|
||||
|
||||
private suspend fun getImageLimitsInternal(): HomeParser.Limits {
|
||||
val url = EhUrl.URL_HOME
|
||||
Log.d(TAG, url)
|
||||
return EhRequestBuilder(url).executeAndParsingWith(HomeParser::parse)
|
||||
return ehRequest(url).executeAndParsingWith(HomeParser::parse)
|
||||
}
|
||||
|
||||
suspend fun getImageLimits(): HomeParser.Result = coroutineScope {
|
||||
@@ -529,8 +519,7 @@ object EhEngine {
|
||||
.add("reset", "Reset Limit")
|
||||
val url = EhUrl.URL_HOME
|
||||
Log.d(TAG, url)
|
||||
return EhRequestBuilder(url)
|
||||
.post(builder.build())
|
||||
return ehRequest(url) { post(builder.build()) }
|
||||
.executeAndParsingWith(HomeParser::parseResetLimits)
|
||||
}
|
||||
|
||||
@@ -538,7 +527,7 @@ object EhEngine {
|
||||
val url = EhUrl.URL_NEWS
|
||||
val referer = EhUrl.REFERER_E
|
||||
Log.d(TAG, url)
|
||||
return EhRequestBuilder(url, referer).executeAndParsingWith {
|
||||
return ehRequest(url, referer).executeAndParsingWith {
|
||||
if (parse) EventPaneParser.parse(this) else null
|
||||
}
|
||||
}
|
||||
@@ -548,21 +537,21 @@ object EhEngine {
|
||||
referer: String,
|
||||
): ProfileParser.Result {
|
||||
Log.d(TAG, url)
|
||||
return EhRequestBuilder(url, referer).executeAndParsingWith(ProfileParser::parse)
|
||||
return ehRequest(url, referer).executeAndParsingWith(ProfileParser::parse)
|
||||
}
|
||||
|
||||
suspend fun getProfile(): ProfileParser.Result {
|
||||
val url = EhUrl.URL_FORUMS
|
||||
Log.d(TAG, url)
|
||||
return getProfileInternal(
|
||||
EhRequestBuilder(url).executeAndParsingWith(ForumsParser::parse),
|
||||
ehRequest(url).executeAndParsingWith(ForumsParser::parse),
|
||||
url,
|
||||
)
|
||||
}
|
||||
|
||||
private suspend fun getUConfigInternal(url: String) {
|
||||
Log.d(TAG, url)
|
||||
EhRequestBuilder(url).executeAndParsingWith {
|
||||
ehRequest(url).executeAndParsingWith {
|
||||
check(contains(U_CONFIG_TEXT)) { "U_CONFIG_TEXT not found!" }
|
||||
}
|
||||
}
|
||||
@@ -602,11 +591,8 @@ object EhEngine {
|
||||
val referer = EhUrl.referer
|
||||
val origin = EhUrl.origin
|
||||
Log.d(TAG, url)
|
||||
return EhRequestBuilder(url, referer, origin)
|
||||
.post(requestBody)
|
||||
.executeAndParsingWith {
|
||||
VoteCommentParser.parse(this, commentVote)
|
||||
}
|
||||
return ehRequest(url, referer, origin) { post(requestBody) }
|
||||
.executeAndParsingWith { VoteCommentParser.parse(this, commentVote) }
|
||||
}
|
||||
|
||||
suspend fun voteTag(
|
||||
@@ -630,8 +616,7 @@ object EhEngine {
|
||||
val referer = EhUrl.referer
|
||||
val origin = EhUrl.origin
|
||||
Log.d(TAG, url)
|
||||
return EhRequestBuilder(url, referer, origin)
|
||||
.post(requestBody)
|
||||
return ehRequest(url, referer, origin) { post(requestBody) }
|
||||
.executeAndParsingWith(VoteTagParser::parse)
|
||||
}
|
||||
|
||||
@@ -679,8 +664,7 @@ object EhEngine {
|
||||
val referer = EhUrl.referer
|
||||
val origin = EhUrl.origin
|
||||
Log.d(TAG, url)
|
||||
return EhRequestBuilder(url, referer, origin)
|
||||
.post(builder.build())
|
||||
return ehRequest(url, referer, origin) { builder.build() }
|
||||
.executeAndParsingWith(GalleryListParser::parse)
|
||||
.apply { fillGalleryList(galleryInfoList, url, true) }
|
||||
}
|
||||
@@ -692,7 +676,7 @@ object EhEngine {
|
||||
): GalleryPageParser.Result {
|
||||
val referer = EhUrl.getGalleryDetailUrl(gid, token)
|
||||
Log.d(TAG, url!!)
|
||||
return EhRequestBuilder(url, referer).executeAndParsingWith(GalleryPageParser::parse)
|
||||
return ehRequest(url, referer).executeAndParsingWith(GalleryPageParser::parse)
|
||||
}
|
||||
|
||||
suspend fun getGalleryPageApi(
|
||||
@@ -716,8 +700,7 @@ object EhEngine {
|
||||
}
|
||||
val origin = EhUrl.origin
|
||||
Log.d(TAG, url)
|
||||
return EhRequestBuilder(url, referer, origin)
|
||||
.post(requestBody)
|
||||
return ehRequest(url, referer, origin) { post(requestBody) }
|
||||
.executeAndParsingWith(GalleryPageApiParser::parse)
|
||||
}
|
||||
}
|
||||
@@ -15,16 +15,18 @@
|
||||
*/
|
||||
package com.hippo.ehviewer.client
|
||||
|
||||
import com.hippo.okhttp.ChromeRequestBuilder
|
||||
import io.ktor.http.HttpMessageBuilder
|
||||
import okhttp3.Request
|
||||
inline fun ehRequest(url: String, referer: String? = null, origin: String? = null, builder: Request.Builder.() -> Unit = {}) = Request.Builder().url(url).apply {
|
||||
addHeader("User-Agent", CHROME_USER_AGENT)
|
||||
addHeader("Accept", CHROME_ACCEPT)
|
||||
addHeader("Accept-Language", CHROME_ACCEPT_LANGUAGE)
|
||||
referer?.let { addHeader("Referer", it) }
|
||||
origin?.let { addHeader("Origin", it) }
|
||||
}.apply(builder).build()
|
||||
|
||||
class EhRequestBuilder(url: String, referer: String? = null, origin: String? = null) :
|
||||
ChromeRequestBuilder(url) {
|
||||
init {
|
||||
referer?.let { addHeader("Referer", it) }
|
||||
origin?.let { addHeader("Origin", it) }
|
||||
}
|
||||
}
|
||||
fun HttpMessageBuilder.referer(value: String?): Unit = value?.let { headers.append("Referer", it) } ?: Unit
|
||||
|
||||
fun HttpMessageBuilder.referer(value: String?): Unit =
|
||||
value?.let { headers.append("Referer", it) } ?: Unit
|
||||
const val CHROME_USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36"
|
||||
const val CHROME_ACCEPT = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
|
||||
const val CHROME_ACCEPT_LANGUAGE = "en-US,en;q=0.5"
|
||||
@@ -24,12 +24,12 @@ import com.hippo.ehviewer.GetText
|
||||
import com.hippo.ehviewer.R
|
||||
import com.hippo.ehviewer.Settings
|
||||
import com.hippo.ehviewer.client.EhEngine
|
||||
import com.hippo.ehviewer.client.EhRequestBuilder
|
||||
import com.hippo.ehviewer.client.EhUrl
|
||||
import com.hippo.ehviewer.client.EhUrl.getGalleryDetailUrl
|
||||
import com.hippo.ehviewer.client.EhUrl.getGalleryMultiPageViewerUrl
|
||||
import com.hippo.ehviewer.client.EhUrl.referer
|
||||
import com.hippo.ehviewer.client.data.GalleryInfo
|
||||
import com.hippo.ehviewer.client.ehRequest
|
||||
import com.hippo.ehviewer.client.exception.ParseException
|
||||
import com.hippo.ehviewer.client.parser.GalleryDetailParser.parsePages
|
||||
import com.hippo.ehviewer.client.parser.GalleryDetailParser.parsePreviewList
|
||||
@@ -360,15 +360,7 @@ class SpiderQueen private constructor(val galleryInfo: GalleryInfo) : CoroutineS
|
||||
}
|
||||
|
||||
private suspend fun readSpiderInfoFromInternet(): SpiderInfo? {
|
||||
val request = EhRequestBuilder(
|
||||
getGalleryDetailUrl(
|
||||
galleryInfo.gid,
|
||||
galleryInfo.token,
|
||||
0,
|
||||
false,
|
||||
),
|
||||
referer,
|
||||
).build()
|
||||
val request = ehRequest(getGalleryDetailUrl(galleryInfo.gid, galleryInfo.token, 0, false), referer)
|
||||
return runSuspendCatching {
|
||||
plainTextOkHttpClient.newCall(request).executeAsync().use { response ->
|
||||
val body = response.body.string()
|
||||
@@ -390,7 +382,7 @@ class SpiderQueen private constructor(val galleryInfo: GalleryInfo) : CoroutineS
|
||||
galleryInfo.token!!,
|
||||
)
|
||||
val referer = referer
|
||||
val request = EhRequestBuilder(url, referer).build()
|
||||
val request = ehRequest(url, referer)
|
||||
try {
|
||||
plainTextOkHttpClient.newCall(request).executeAsync().use { response ->
|
||||
val body = response.body.string()
|
||||
@@ -426,7 +418,7 @@ class SpiderQueen private constructor(val galleryInfo: GalleryInfo) : CoroutineS
|
||||
false,
|
||||
)
|
||||
val referer = referer
|
||||
val request = EhRequestBuilder(url, referer).build()
|
||||
val request = ehRequest(url, referer)
|
||||
try {
|
||||
plainTextOkHttpClient.newCall(request).executeAsync().use { response ->
|
||||
val body = response.body.string()
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
/*
|
||||
* Copyright 2016 Hippo Seven
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.hippo.okhttp
|
||||
|
||||
import okhttp3.Request
|
||||
|
||||
open class ChromeRequestBuilder(url: String) : Request.Builder() {
|
||||
companion object {
|
||||
private const val CHROME_USER_AGENT =
|
||||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36"
|
||||
private const val CHROME_ACCEPT =
|
||||
"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
|
||||
private const val CHROME_ACCEPT_LANGUAGE = "en-US,en;q=0.5"
|
||||
}
|
||||
|
||||
init {
|
||||
this.url(url)
|
||||
this.addHeader("User-Agent", CHROME_USER_AGENT)
|
||||
this.addHeader("Accept", CHROME_ACCEPT)
|
||||
this.addHeader("Accept-Language", CHROME_ACCEPT_LANGUAGE)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user