add base network logic

This commit is contained in:
Shcherbatykh Oleg
2026-02-10 13:54:23 +03:00
parent f2f7a558a1
commit f5d4867797
8 changed files with 72 additions and 4 deletions

View File

@@ -0,0 +1,10 @@
package ru.fincode.tsudesk.core.network
object HttpClientProvider {
fun provide(): OkHttpClient =
OkHttpClient.Builder()
.connectTimeout(15, TimeUnit.SECONDS)
.readTimeout(15, TimeUnit.SECONDS)
.build()
}

View File

@@ -0,0 +1,5 @@
package ru.fincode.tsudesk.core.network
object NetworkConstants {
const val BASE_URL = "https://api.tsu.tula.ru/"
}

View File

@@ -0,0 +1,8 @@
package ru.fincode.tsudesk.core.network
sealed class NetworkError {
object NoInternet : NetworkError()
object Timeout : NetworkError()
data class Http(val code: Int) : NetworkError()
data class Unknown(val throwable: Throwable) : NetworkError()
}

View File

@@ -0,0 +1,6 @@
package ru.fincode.tsudesk.core.network
sealed class NetworkResult<out T> {
data class Success<T>(val data: T) : NetworkResult<T>()
data class Error(val error: NetworkError) : NetworkResult<Nothing>()
}

View File

@@ -0,0 +1,11 @@
package ru.fincode.tsudesk.core.network
object RetrofitProvider {
fun provide(baseUrl: String, client: OkHttpClient): Retrofit =
Retrofit.Builder()
.baseUrl(baseUrl)
.client(client)
.addConverterFactory(SimpleXmlConverterFactory.create())
.build()
}

View File

@@ -0,0 +1,25 @@
package ru.fincode.tsudesk.core.network.di
import okhttp3.OkHttpClient
import retrofit2.Retrofit
import ru.fincode.tsudesk.core.network.HttpClientProvider
import ru.fincode.tsudesk.core.network.NetworkConstants
import ru.fincode.tsudesk.core.network.RetrofitProvider
@Module
@InstallIn(SingletonComponent::class)
object NetworkModule {
@Provides
@Singleton
fun provideOkHttpClient(): OkHttpClient =
HttpClientProvider.provide()
@Provides
@Singleton
fun provideRetrofit(client: OkHttpClient): Retrofit =
RetrofitProvider.provide(
baseUrl = NetworkConstants.BASE_URL,
client = client
)
}