54 lines
1.6 KiB
Kotlin
54 lines
1.6 KiB
Kotlin
package core.di
|
|
|
|
import com.google.gson.GsonBuilder
|
|
import core.network.AuthInterceptor
|
|
import core.network.DynamicBaseUrlInterceptor
|
|
import core.network.ServerConfig
|
|
import dagger.Module
|
|
import dagger.Provides
|
|
import dagger.hilt.InstallIn
|
|
import dagger.hilt.components.SingletonComponent
|
|
import okhttp3.OkHttpClient
|
|
import okhttp3.logging.HttpLoggingInterceptor
|
|
import retrofit2.Retrofit
|
|
import retrofit2.converter.gson.GsonConverterFactory
|
|
import java.util.concurrent.TimeUnit
|
|
import javax.inject.Singleton
|
|
|
|
@Module
|
|
@InstallIn(SingletonComponent::class)
|
|
object NetworkModule {
|
|
|
|
@Provides
|
|
@Singleton
|
|
fun provideOkHttpClient(
|
|
authInterceptor: AuthInterceptor,
|
|
dynamicBaseUrlInterceptor: DynamicBaseUrlInterceptor
|
|
): OkHttpClient {
|
|
val logging = HttpLoggingInterceptor().apply {
|
|
level = HttpLoggingInterceptor.Level.BODY
|
|
}
|
|
return OkHttpClient.Builder()
|
|
.connectTimeout(60, TimeUnit.SECONDS)
|
|
.readTimeout(60, TimeUnit.SECONDS)
|
|
.writeTimeout(300, TimeUnit.SECONDS)
|
|
.addInterceptor(logging)
|
|
.addInterceptor(dynamicBaseUrlInterceptor)
|
|
.addInterceptor(authInterceptor)
|
|
.build()
|
|
}
|
|
|
|
@Provides
|
|
@Singleton
|
|
fun provideRetrofit(okHttpClient: OkHttpClient): Retrofit {
|
|
val gson = com.google.gson.GsonBuilder()
|
|
.serializeNulls()
|
|
.create()
|
|
return Retrofit.Builder()
|
|
.baseUrl("https://api.placeholder.com/")
|
|
.client(okHttpClient)
|
|
.addConverterFactory(GsonConverterFactory.create(gson))
|
|
.build()
|
|
}
|
|
}
|