Revert "Feature/macgills/2347 range headers"

This commit is contained in:
Seán Mac Gillicuddy 2020-10-08 09:43:18 +01:00 committed by GitHub
parent 53ab3ed0e1
commit 42015d5cb0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 16 additions and 30 deletions

View File

@ -32,7 +32,7 @@ class ServiceWorkerInitialiser @Inject constructor(zimReaderContainer: ZimReader
ServiceWorkerControllerCompat.getInstance() ServiceWorkerControllerCompat.getInstance()
.setServiceWorkerClient(object : ServiceWorkerClientCompat() { .setServiceWorkerClient(object : ServiceWorkerClientCompat() {
override fun shouldInterceptRequest(request: WebResourceRequest): WebResourceResponse? = override fun shouldInterceptRequest(request: WebResourceRequest): WebResourceResponse? =
zimReaderContainer.load(request.url.toString(), request.requestHeaders) zimReaderContainer.load(request.url.toString())
}) })
} }
} }

View File

@ -22,7 +22,6 @@ import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.util.Log; import android.util.Log;
import android.webkit.MimeTypeMap; import android.webkit.MimeTypeMap;
import android.webkit.WebResourceRequest;
import android.webkit.WebResourceResponse; import android.webkit.WebResourceResponse;
import android.webkit.WebView; import android.webkit.WebView;
import android.webkit.WebViewClient; import android.webkit.WebViewClient;
@ -142,14 +141,14 @@ public class CoreWebViewClient extends WebViewClient {
} }
} }
@Nullable
@Nullable @Override @Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
final String url = convertLegacyUrl(request.getUrl().toString()); url = convertLegacyUrl(url);
if (url.startsWith(CONTENT_PREFIX)) { if (url.startsWith(CONTENT_PREFIX)) {
return zimReaderContainer.load(url, request.getRequestHeaders()); return zimReaderContainer.load(url);
} else { } else {
return super.shouldInterceptRequest(view, request); return super.shouldInterceptRequest(view, url);
} }
} }
} }

View File

@ -172,7 +172,7 @@ open class KiwixWebView @SuppressLint("SetJavaScriptEnabled") constructor(
}.first { !it.exists() } }.first { !it.exists() }
val source = Uri.parse(src) val source = Uri.parse(src)
try { try {
zimReaderContainer.load("$source", emptyMap()).data.use { inputStream -> zimReaderContainer.load("$source").data.use { inputStream ->
fileToSave.outputStream().use { inputStream.copyTo(it) } fileToSave.outputStream().use { inputStream.copyTo(it) }
} }
instance.toast(instance.getString(R.string.save_media_saved, fileToSave.name)) instance.toast(instance.getString(R.string.save_media_saved, fileToSave.name))

View File

@ -20,7 +20,6 @@ package org.kiwix.kiwixmobile.core.reader
import android.webkit.WebResourceResponse import android.webkit.WebResourceResponse
import org.kiwix.kiwixmobile.core.reader.ZimFileReader.Factory import org.kiwix.kiwixmobile.core.reader.ZimFileReader.Factory
import java.io.File import java.io.File
import java.net.HttpURLConnection
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@ -48,26 +47,12 @@ class ZimReaderContainer @Inject constructor(
fun getRandomArticleUrl() = zimFileReader?.getRandomArticleUrl() fun getRandomArticleUrl() = zimFileReader?.getRandomArticleUrl()
fun isRedirect(url: String): Boolean = zimFileReader?.isRedirect(url) == true fun isRedirect(url: String): Boolean = zimFileReader?.isRedirect(url) == true
fun getRedirect(url: String): String = zimFileReader?.getRedirect(url) ?: "" fun getRedirect(url: String): String = zimFileReader?.getRedirect(url) ?: ""
fun load(url: String, requestHeaders: Map<String, String>): WebResourceResponse { fun load(url: String) =
val data = zimFileReader?.load(url) WebResourceResponse(
return WebResourceResponse(zimFileReader?.readMimeType(url), Charsets.UTF_8.name(), data) zimFileReader?.readMimeType(url),
.apply { Charsets.UTF_8.name(),
val headers = mutableMapOf("Accept-Ranges" to "bytes") zimFileReader?.load(url)
if ("Range" in requestHeaders.keys) { )
setStatusCodeAndReasonPhrase(HttpURLConnection.HTTP_PARTIAL, "Partial Content")
val fullSize = data?.available()?.toLong() ?: 0L
val lastByte = fullSize - 1
val byteRanges = requestHeaders.getValue("Range").substringAfter("=").split("-")
headers["Content-Range"] = "bytes ${byteRanges[0]}-$lastByte/$fullSize"
if (byteRanges.size == 1) {
headers["Connection"] = "close"
}
} else {
setStatusCodeAndReasonPhrase(HttpURLConnection.HTTP_OK, "OK")
}
responseHeaders = headers
}
}
fun copyReader(): ZimFileReader? = zimFile?.let(zimFileReaderFactory::create) fun copyReader(): ZimFileReader? = zimFile?.let(zimFileReaderFactory::create)
@ -86,3 +71,5 @@ class ZimReaderContainer @Inject constructor(
val favicon get() = zimFileReader?.favicon val favicon get() = zimFileReader?.favicon
val language get() = zimFileReader?.language val language get() = zimFileReader?.language
} }
data class SearchResult(val title: String?)