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()
.setServiceWorkerClient(object : ServiceWorkerClientCompat() {
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.util.Log;
import android.webkit.MimeTypeMap;
import android.webkit.WebResourceRequest;
import android.webkit.WebResourceResponse;
import android.webkit.WebView;
import android.webkit.WebViewClient;
@ -142,14 +141,14 @@ public class CoreWebViewClient extends WebViewClient {
}
}
@Nullable @Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
final String url = convertLegacyUrl(request.getUrl().toString());
@Nullable
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
url = convertLegacyUrl(url);
if (url.startsWith(CONTENT_PREFIX)) {
return zimReaderContainer.load(url, request.getRequestHeaders());
return zimReaderContainer.load(url);
} 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() }
val source = Uri.parse(src)
try {
zimReaderContainer.load("$source", emptyMap()).data.use { inputStream ->
zimReaderContainer.load("$source").data.use { inputStream ->
fileToSave.outputStream().use { inputStream.copyTo(it) }
}
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 org.kiwix.kiwixmobile.core.reader.ZimFileReader.Factory
import java.io.File
import java.net.HttpURLConnection
import javax.inject.Inject
import javax.inject.Singleton
@ -48,26 +47,12 @@ class ZimReaderContainer @Inject constructor(
fun getRandomArticleUrl() = zimFileReader?.getRandomArticleUrl()
fun isRedirect(url: String): Boolean = zimFileReader?.isRedirect(url) == true
fun getRedirect(url: String): String = zimFileReader?.getRedirect(url) ?: ""
fun load(url: String, requestHeaders: Map<String, String>): WebResourceResponse {
val data = zimFileReader?.load(url)
return WebResourceResponse(zimFileReader?.readMimeType(url), Charsets.UTF_8.name(), data)
.apply {
val headers = mutableMapOf("Accept-Ranges" to "bytes")
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 load(url: String) =
WebResourceResponse(
zimFileReader?.readMimeType(url),
Charsets.UTF_8.name(),
zimFileReader?.load(url)
)
fun copyReader(): ZimFileReader? = zimFile?.let(zimFileReaderFactory::create)
@ -86,3 +71,5 @@ class ZimReaderContainer @Inject constructor(
val favicon get() = zimFileReader?.favicon
val language get() = zimFileReader?.language
}
data class SearchResult(val title: String?)