Skip to content

Commit d01b5ce

Browse files
committed
feature: set up Api Module
1 parent 7ea03ae commit d01b5ce

File tree

1 file changed

+54
-0
lines changed
  • app/src/main/java/com/example/diff_utils_recyclerview_example/data/di

1 file changed

+54
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.example.diff_utils_recyclerview_example.data.di
2+
3+
import com.example.diff_utils_recyclerview_example.data.remote.ApiService
4+
import com.example.diff_utils_recyclerview_example.data.repository.CharactersRepo
5+
import com.example.diff_utils_recyclerview_example.data.repository.CharactersRepoImpl
6+
import com.example.diff_utils_recyclerview_example.ui.BASE_URL
7+
import com.jakewharton.retrofit2.adapter.kotlin.coroutines.CoroutineCallAdapterFactory
8+
import dagger.Module
9+
import dagger.Provides
10+
import dagger.hilt.InstallIn
11+
import dagger.hilt.components.SingletonComponent
12+
import de.hdodenhof.circleimageview.BuildConfig
13+
import okhttp3.OkHttpClient
14+
import okhttp3.logging.HttpLoggingInterceptor
15+
import retrofit2.Retrofit
16+
import retrofit2.converter.gson.GsonConverterFactory
17+
import javax.inject.Singleton
18+
19+
@Module
20+
@InstallIn(SingletonComponent::class)
21+
object AppModule {
22+
23+
@Provides
24+
fun providesOkhttp():OkHttpClient{
25+
val okhhtp = OkHttpClient.Builder()
26+
27+
if (BuildConfig.DEBUG) {
28+
val logger = HttpLoggingInterceptor()
29+
logger.setLevel(HttpLoggingInterceptor.Level.BODY)
30+
31+
okhhtp.addInterceptor(logger)
32+
}
33+
return okhhtp.build()
34+
}
35+
36+
@Provides
37+
@Singleton
38+
fun providesRetrofit(okHttpClient: OkHttpClient):Retrofit = Retrofit
39+
.Builder()
40+
.addConverterFactory(GsonConverterFactory.create())
41+
.addCallAdapterFactory(CoroutineCallAdapterFactory())
42+
.client(okHttpClient)
43+
.baseUrl(BASE_URL)
44+
.build()
45+
46+
@Provides
47+
@Singleton
48+
fun apiService(retrofit: Retrofit): ApiService = retrofit.create(ApiService::class.java)
49+
50+
@Provides
51+
@Singleton
52+
fun providesCharactersRepo(apiService: ApiService):CharactersRepo= CharactersRepoImpl(apiService)
53+
54+
}

0 commit comments

Comments
 (0)