Add support for proxies - 1/3

This commit is contained in:
Rahul Patel
2023-10-18 00:50:59 +05:30
parent 93b8cf3455
commit ea2436ae6f
2 changed files with 28 additions and 4 deletions

View File

@@ -0,0 +1,9 @@
package com.aurora.store.data.network
import com.aurora.gplayapi.network.IHttpClient
import java.net.Proxy
interface IProxyHttpClient : IHttpClient {
@Throws(UnsupportedOperationException::class)
fun setProxy(proxy: Proxy, proxyUser: String?, proxyPassword: String?): IHttpClient
}

View File

@@ -20,7 +20,6 @@
package com.aurora.store.data.network
import com.aurora.gplayapi.data.models.PlayResponse
import com.aurora.gplayapi.network.IHttpClient
import com.aurora.store.BuildConfig
import com.aurora.store.util.Log
import kotlinx.coroutines.flow.MutableStateFlow
@@ -32,9 +31,10 @@ import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.RequestBody.Companion.toRequestBody
import java.io.IOException
import java.net.Proxy
import java.util.concurrent.TimeUnit
object OkHttpClient : IHttpClient {
object OkHttpClient : IProxyHttpClient {
private const val POST = "POST"
private const val GET = "GET"
@@ -43,15 +43,30 @@ object OkHttpClient : IHttpClient {
override val responseCode: StateFlow<Int>
get() = _responseCode.asStateFlow()
private val okHttpClient = OkHttpClient().newBuilder()
private var okHttpClient = OkHttpClient()
private val okHttpClientBuilder = OkHttpClient().newBuilder()
.connectTimeout(25, TimeUnit.SECONDS)
.readTimeout(25, TimeUnit.SECONDS)
.writeTimeout(25, TimeUnit.SECONDS)
.retryOnConnectionFailure(true)
.followRedirects(true)
.followSslRedirects(true)
.build()
override fun setProxy(
proxy: Proxy, proxyUser: String?, proxyPassword: String?
): IProxyHttpClient {
if (proxyUser != null) {
okHttpClientBuilder.proxyAuthenticator { route, response ->
val credential = Credentials.basic(proxyUser, proxyPassword.orEmpty())
response.request.newBuilder().header("Proxy-Authorization", credential).build()
}
}
okHttpClientBuilder.proxy(proxy)
okHttpClient = okHttpClientBuilder.build()
return this
}
@Throws(IOException::class)
fun post(url: String, headers: Map<String, String>, requestBody: RequestBody): PlayResponse {