update error handle
This commit is contained in:
@@ -1,11 +1,15 @@
|
||||
package ru.fincode.tsudesk.core.network
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import okhttp3.OkHttpClient
|
||||
import ru.fincode.tsudesk.core.common.app.AppConfig
|
||||
import ru.fincode.tsudesk.core.network.interceptor.DebugInterceptor
|
||||
import java.security.SecureRandom
|
||||
import java.security.cert.X509Certificate
|
||||
import java.util.concurrent.TimeUnit
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
import javax.net.ssl.*
|
||||
|
||||
@Singleton
|
||||
class OkHttpClientFactory @Inject constructor(
|
||||
@@ -22,8 +26,38 @@ class OkHttpClientFactory @Inject constructor(
|
||||
|
||||
if (appConfig.isDebug) {
|
||||
builder.addInterceptor(debugInterceptor)
|
||||
applyUnsafeSslForDebug(builder)
|
||||
}
|
||||
|
||||
return builder.build()
|
||||
}
|
||||
|
||||
private fun applyUnsafeSslForDebug(builder: OkHttpClient.Builder) {
|
||||
val trustManager = @SuppressLint("CustomX509TrustManager")
|
||||
object : X509TrustManager {
|
||||
|
||||
override fun checkClientTrusted(
|
||||
chain: Array<X509Certificate>,
|
||||
authType: String
|
||||
) = Unit
|
||||
|
||||
override fun checkServerTrusted(
|
||||
chain: Array<X509Certificate>,
|
||||
authType: String
|
||||
) = Unit
|
||||
|
||||
override fun getAcceptedIssuers(): Array<X509Certificate> = emptyArray()
|
||||
}
|
||||
|
||||
val sslContext = SSLContext.getInstance("SSL").apply {
|
||||
init(null, arrayOf<TrustManager>(trustManager), SecureRandom())
|
||||
}
|
||||
|
||||
builder.sslSocketFactory(
|
||||
sslContext.socketFactory,
|
||||
trustManager
|
||||
)
|
||||
|
||||
builder.hostnameVerifier { _, _ -> true }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package ru.fincode.tsudesk.core.network.model
|
||||
|
||||
import ru.fincode.tsudesk.core.common.model.AppError
|
||||
|
||||
sealed class NetworkError(open val meta: NetworkMeta) {
|
||||
|
||||
data class NoInternet(override val meta: NetworkMeta) : NetworkError(meta)
|
||||
@@ -14,4 +16,11 @@ sealed class NetworkError(open val meta: NetworkMeta) {
|
||||
val throwable: Throwable,
|
||||
override val meta: NetworkMeta
|
||||
) : NetworkError(meta)
|
||||
|
||||
fun toAppError(): AppError = when (this) {
|
||||
is NoInternet -> AppError.NoInternet
|
||||
is Timeout -> AppError.Timeout
|
||||
is Http -> AppError.Http(code)
|
||||
is Unknown -> AppError.Unknown(throwable.message)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user