mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
feat : run custom js in webviewresolver (#888)
Co-authored-by: coxju <coxju>
This commit is contained in:
parent
f40a8d9418
commit
bdef6524e7
1 changed files with 22 additions and 1 deletions
|
@ -2,6 +2,8 @@ package com.lagradost.cloudstream3.network
|
|||
|
||||
import android.annotation.SuppressLint
|
||||
import android.net.http.SslError
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.webkit.*
|
||||
import com.lagradost.cloudstream3.AcraApplication
|
||||
import com.lagradost.cloudstream3.AcraApplication.Companion.context
|
||||
|
@ -27,15 +29,26 @@ import java.net.URI
|
|||
* @param additionalUrls this will make resolveUsingWebView also return all other requests matching the list of Regex.
|
||||
* @param userAgent if null then will use the default user agent
|
||||
* @param useOkhttp will try to use the okhttp client as much as possible, but this might cause some requests to fail. Disable for cloudflare.
|
||||
* @param script pass custom js to execute
|
||||
* @param scriptCallback will be called with the result from custom js
|
||||
* */
|
||||
class WebViewResolver(
|
||||
val interceptUrl: Regex,
|
||||
val additionalUrls: List<Regex> = emptyList(),
|
||||
val userAgent: String? = USER_AGENT,
|
||||
val useOkhttp: Boolean = true
|
||||
val useOkhttp: Boolean = true,
|
||||
val script: String? = null,
|
||||
val scriptCallback: ((String) -> Unit)? = null
|
||||
) :
|
||||
Interceptor {
|
||||
|
||||
constructor(
|
||||
interceptUrl: Regex,
|
||||
additionalUrls: List<Regex> = emptyList(),
|
||||
userAgent: String? = USER_AGENT,
|
||||
useOkhttp: Boolean = true
|
||||
) : this(interceptUrl, additionalUrls, userAgent, useOkhttp, null, null)
|
||||
|
||||
companion object {
|
||||
var webViewUserAgent: String? = null
|
||||
|
||||
|
@ -136,6 +149,14 @@ class WebViewResolver(
|
|||
val webViewUrl = request.url.toString()
|
||||
println("Loading WebView URL: $webViewUrl")
|
||||
|
||||
if (script != null) {
|
||||
val handler = Handler(Looper.getMainLooper())
|
||||
handler.post {
|
||||
view.evaluateJavascript("$script")
|
||||
{ scriptCallback?.invoke(it) }
|
||||
}
|
||||
}
|
||||
|
||||
if (interceptUrl.containsMatchIn(webViewUrl)) {
|
||||
fixedRequest = request.toRequest()?.also {
|
||||
requestCallBack(it)
|
||||
|
|
Loading…
Reference in a new issue