2021-08-14 09:42:51 +00:00
|
|
|
package com.causa_arcana
|
|
|
|
|
|
|
|
import android.content.Context
|
|
|
|
import android.webkit.WebResourceRequest
|
|
|
|
import android.webkit.WebResourceResponse
|
|
|
|
import android.webkit.WebView
|
|
|
|
import android.webkit.WebViewClient
|
|
|
|
|
2021-08-15 21:24:37 +00:00
|
|
|
class CustomWebViewClient(private val context: Context) : WebViewClient() {
|
2021-08-15 01:36:36 +00:00
|
|
|
companion object {
|
|
|
|
private const val HOST = "causa-arcana.com"
|
|
|
|
private const val SCHEME = "https"
|
|
|
|
private const val NO_PORT = -1
|
|
|
|
private const val PORT = 443
|
|
|
|
}
|
|
|
|
|
2021-08-14 09:42:51 +00:00
|
|
|
override fun shouldInterceptRequest(
|
|
|
|
view: WebView?,
|
|
|
|
request: WebResourceRequest,
|
|
|
|
): WebResourceResponse? {
|
2021-08-15 01:36:36 +00:00
|
|
|
if (!relatedHost(request)) return super.shouldInterceptRequest(view, request)
|
2021-08-14 09:42:51 +00:00
|
|
|
|
2021-08-16 23:14:08 +00:00
|
|
|
if (!validComponents(request)) return teapotResponse()
|
2021-08-14 09:42:51 +00:00
|
|
|
|
2021-08-15 01:36:36 +00:00
|
|
|
return when (request.url.path) {
|
|
|
|
"/assets/images/blog/decentralized-vs-distributed-wrong.png" ->
|
2021-08-16 23:34:27 +00:00
|
|
|
assetResponse("image/png",
|
|
|
|
"decentralized-vs-distributed-wrong.png")
|
2021-08-15 01:36:36 +00:00
|
|
|
"/assets/images/blog/network-topologies.png" ->
|
2021-08-16 23:34:27 +00:00
|
|
|
assetResponse("image/png", "network-topologies.png")
|
|
|
|
else -> teapotResponse()
|
2021-08-14 09:42:51 +00:00
|
|
|
}
|
2021-08-15 01:36:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
private fun relatedHost(request: WebResourceRequest): Boolean {
|
|
|
|
return request.url.host?.lowercase() == HOST
|
|
|
|
}
|
2021-08-14 09:42:51 +00:00
|
|
|
|
2021-08-15 01:36:36 +00:00
|
|
|
private fun validComponents(request: WebResourceRequest): Boolean {
|
|
|
|
return request.url.scheme?.lowercase() == SCHEME &&
|
|
|
|
request.url.userInfo == null &&
|
|
|
|
(request.url.port == NO_PORT || request.url.port == PORT) &&
|
|
|
|
request.url.query == null &&
|
|
|
|
request.url.fragment == null
|
2021-08-14 09:42:51 +00:00
|
|
|
}
|
2021-08-16 23:14:08 +00:00
|
|
|
|
|
|
|
private fun teapotResponse(): WebResourceResponse {
|
|
|
|
return WebResourceResponse(
|
|
|
|
"text/plain", "utf-8", 418, "I'm a teapot",
|
|
|
|
null, null,
|
|
|
|
)
|
|
|
|
}
|
2021-08-16 23:34:27 +00:00
|
|
|
|
|
|
|
private fun assetResponse(mimeType: String, assetFileName: String):
|
|
|
|
WebResourceResponse {
|
|
|
|
return WebResourceResponse(mimeType, "utf-8", context.assets.open(assetFileName))
|
|
|
|
}
|
2021-08-14 09:42:51 +00:00
|
|
|
}
|