mirror of
https://github.com/revanced/revanced-manager-compose-old.git
synced 2025-04-30 06:24:28 +02:00
feat: HTTP/3
This commit is contained in:
parent
8f41b2e284
commit
2d1b80c70f
@ -135,4 +135,6 @@ dependencies {
|
|||||||
implementation("com.google.guava:guava:31.0.1-android")
|
implementation("com.google.guava:guava:31.0.1-android")
|
||||||
implementation("androidx.concurrent:concurrent-futures:1.1.0")
|
implementation("androidx.concurrent:concurrent-futures:1.1.0")
|
||||||
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.6.4")
|
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.6.4")
|
||||||
|
|
||||||
|
implementation("com.github.niusounds:cronet-engine:0.1.0")
|
||||||
}
|
}
|
||||||
|
@ -1,29 +1,26 @@
|
|||||||
package app.revanced.manager.di
|
package app.revanced.manager.di
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import com.niusounds.ktor.client.engine.cronet.Cronet
|
||||||
import io.ktor.client.*
|
import io.ktor.client.*
|
||||||
import io.ktor.client.engine.okhttp.*
|
|
||||||
import io.ktor.client.plugins.*
|
import io.ktor.client.plugins.*
|
||||||
|
import io.ktor.client.plugins.cache.*
|
||||||
import io.ktor.client.plugins.contentnegotiation.*
|
import io.ktor.client.plugins.contentnegotiation.*
|
||||||
import io.ktor.serialization.kotlinx.json.*
|
import io.ktor.serialization.kotlinx.json.*
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import okhttp3.Dns
|
import org.koin.android.ext.koin.androidContext
|
||||||
import org.koin.core.module.dsl.singleOf
|
|
||||||
import org.koin.dsl.module
|
import org.koin.dsl.module
|
||||||
import java.net.Inet4Address
|
|
||||||
import java.net.InetAddress
|
|
||||||
|
|
||||||
val httpModule = module {
|
val httpModule = module {
|
||||||
fun provideHttpClient() = HttpClient(OkHttp) {
|
fun provideHttpClient(appContext: Context) = HttpClient(
|
||||||
engine {
|
engine = Cronet.create {
|
||||||
config {
|
context = appContext
|
||||||
dns(object : Dns {
|
config = {
|
||||||
override fun lookup(hostname: String): List<InetAddress> {
|
enableBrotli(true)
|
||||||
val addresses = Dns.SYSTEM.lookup(hostname)
|
enableQuic(true)
|
||||||
return addresses.filterIsInstance<Inet4Address>()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
) {
|
||||||
BrowserUserAgent()
|
BrowserUserAgent()
|
||||||
install(ContentNegotiation) {
|
install(ContentNegotiation) {
|
||||||
json(Json {
|
json(Json {
|
||||||
@ -32,7 +29,13 @@ val httpModule = module {
|
|||||||
ignoreUnknownKeys = true
|
ignoreUnknownKeys = true
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
install(HttpRequestRetry) {
|
||||||
|
retryOnServerErrors(maxRetries = 5)
|
||||||
|
}
|
||||||
|
install(HttpCache)
|
||||||
}
|
}
|
||||||
|
|
||||||
singleOf(::provideHttpClient)
|
single {
|
||||||
|
provideHttpClient(androidContext())
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user