Merge branch 'glide-only-mirrors' into 'master'

Remove deprecated HttpGlideUrlLoader as we always use DownloadRequest with mirrors now

Closes #2429

See merge request fdroid/fdroidclient!1189
This commit is contained in:
Hans-Christoph Steiner
2023-02-07 13:46:54 +00:00
3 changed files with 1 additions and 78 deletions

View File

@@ -9,7 +9,6 @@ import com.bumptech.glide.GlideBuilder;
import com.bumptech.glide.Registry;
import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.load.DecodeFormat;
import com.bumptech.glide.load.model.GlideUrl;
import com.bumptech.glide.load.resource.bitmap.BitmapTransitionOptions;
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
import com.bumptech.glide.module.AppGlideModule;
@@ -17,15 +16,12 @@ import com.bumptech.glide.request.RequestOptions;
import org.fdroid.download.DownloadRequest;
import org.fdroid.download.glide.DownloadRequestLoader;
import org.fdroid.download.glide.HttpGlideUrlLoader;
import org.fdroid.fdroid.Preferences;
import androidx.annotation.NonNull;
import java.io.InputStream;
import info.guardianproject.netcipher.NetCipher;
/**
* The one time initialization of Glide.
*/
@@ -43,9 +39,6 @@ public class FDroidGlideModule extends AppGlideModule {
@Override
public void registerComponents(@NonNull Context context, @NonNull Glide glide, Registry registry) {
HttpGlideUrlLoader.Factory urlLoaderFactory =
new HttpGlideUrlLoader.Factory(DownloaderFactory.HTTP_MANAGER, NetCipher::getProxy);
registry.replace(GlideUrl.class, InputStream.class, urlLoaderFactory);
DownloadRequestLoader.Factory requestLoaderFactory =
new DownloadRequestLoader.Factory(DownloaderFactory.HTTP_MANAGER);
registry.append(DownloadRequest.class, InputStream.class, requestLoaderFactory);

View File

@@ -1,11 +1,8 @@
package org.fdroid.download.glide
import android.net.Uri
import com.bumptech.glide.Priority
import com.bumptech.glide.load.DataSource
import com.bumptech.glide.load.data.DataFetcher
import com.bumptech.glide.load.model.GlideUrl
import io.ktor.client.engine.ProxyConfig
import io.ktor.utils.io.jvm.javaio.toInputStream
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.Dispatchers
@@ -14,7 +11,6 @@ import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import org.fdroid.download.DownloadRequest
import org.fdroid.download.HttpManager
import org.fdroid.download.Mirror
import java.io.InputStream
internal class HttpFetcher(
@@ -22,21 +18,7 @@ internal class HttpFetcher(
private val downloadRequest: DownloadRequest,
) : DataFetcher<InputStream> {
@Deprecated("Use DownloadRequests with other constructor instead")
constructor(
httpManager: HttpManager,
glideUrl: GlideUrl,
proxy: ProxyConfig?,
) : this(httpManager, getDownloadRequest(glideUrl, proxy))
companion object {
private fun getDownloadRequest(glideUrl: GlideUrl, proxy: ProxyConfig?): DownloadRequest {
val (mirror, path) = glideUrl.toStringUrl().split("/repo/")
return DownloadRequest(Uri.decode(path), listOf(Mirror("$mirror/repo")), proxy)
}
}
var job: Job? = null
private var job: Job? = null
@OptIn(DelicateCoroutinesApi::class)
override fun loadData(priority: Priority, callback: DataFetcher.DataCallback<in InputStream>) {

View File

@@ -1,52 +0,0 @@
package org.fdroid.download.glide
import com.bumptech.glide.load.Options
import com.bumptech.glide.load.model.GlideUrl
import com.bumptech.glide.load.model.ModelLoader
import com.bumptech.glide.load.model.ModelLoader.LoadData
import com.bumptech.glide.load.model.ModelLoaderFactory
import com.bumptech.glide.load.model.MultiModelLoaderFactory
import io.ktor.client.engine.ProxyConfig
import mu.KotlinLogging
import org.fdroid.download.HttpManager
import java.io.InputStream
@Deprecated("Use DownloadRequestLoader instead")
public class HttpGlideUrlLoader(
private val httpManager: HttpManager,
private val proxyGetter: () -> ProxyConfig?,
) : ModelLoader<GlideUrl, InputStream> {
private companion object {
private val log = KotlinLogging.logger { }
}
override fun handles(url: GlideUrl): Boolean {
return true
}
override fun buildLoadData(
glideUrl: GlideUrl,
width: Int,
height: Int,
options: Options,
): LoadData<InputStream> {
if (log.isDebugEnabled) log.warn { "Not using mirrors when loading $glideUrl" }
else log.warn { "Not using mirrors for load" }
return LoadData(glideUrl, HttpFetcher(httpManager, glideUrl, proxyGetter()))
}
public class Factory(
private val httpManager: HttpManager,
private val proxyGetter: () -> ProxyConfig?,
) : ModelLoaderFactory<GlideUrl, InputStream> {
override fun build(
multiFactory: MultiModelLoaderFactory,
): ModelLoader<GlideUrl, InputStream> {
return HttpGlideUrlLoader(httpManager, proxyGetter)
}
override fun teardown() {}
}
}