update error handle

This commit is contained in:
2026-02-16 17:40:21 +03:00
parent b47bba9e22
commit d64f2b5b8f
7 changed files with 61 additions and 13 deletions

View File

@@ -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 }
}
}

View File

@@ -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)
}
}