Skip to content

Instantly share code, notes, and snippets.

@Farhandroid
Created March 11, 2022 17:10
Show Gist options
  • Save Farhandroid/be914d9396cc5e213192527bbe1cf772 to your computer and use it in GitHub Desktop.
Save Farhandroid/be914d9396cc5e213192527bbe1cf772 to your computer and use it in GitHub Desktop.
NetworkModule
@Module
@InstallIn(SingletonComponent::class)
object NetworkModule {
@Provides
@Singleton
fun provideHttpClient(): OkHttpClient {
return OkHttpClient.Builder().apply {
this.addInterceptor(Interceptor { chain ->
val original = chain.request()
val request = original.newBuilder()
.header("Authorization", BuildConfig.AUTH_KEY)
.method(original.method, original.body)
.build()
chain.proceed(request)
})
.connectTimeout(30,TimeUnit.SECONDS)
.readTimeout(20,TimeUnit.SECONDS)
.writeTimeout(25,TimeUnit.SECONDS)
}.build()
}
@Provides
@Singleton
fun provideRetrofitInstance(okHttpClient: OkHttpClient): Retrofit {
return Retrofit.Builder()
.baseUrl(BuildConfig.BASE_URL)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create(GsonBuilder().create()))
.build()
}
@Provides
@Singleton
fun provideImageApiService(retrofit: Retrofit): ImageApiService {
return retrofit.create(ImageApiService::class.java)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment