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 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() .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() } }