50 lines
1.5 KiB
Kotlin
50 lines
1.5 KiB
Kotlin
package core.di
|
|
|
|
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.HEADERS
|
|
}
|
|
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 {
|
|
return Retrofit.Builder()
|
|
.baseUrl("https://api.placeholder.com/")
|
|
.client(okHttpClient)
|
|
.addConverterFactory(GsonConverterFactory.create())
|
|
.build()
|
|
}
|
|
}
|