/
ApiModule.kt
57 lines (48 loc) · 1.98 KB
/
ApiModule.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package com.oswaldo.openpay.core.di
import com.oswaldo.openpay.ui.movies.data.datasource.MoviesRemoteDataSource
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import okhttp3.Interceptor
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import javax.inject.Singleton
@Module
@InstallIn(SingletonComponent::class)
object ApiModule {
private const val BASE_URL = "http://api.themoviedb.org/3/"
@Singleton
@Provides
fun providesHttpLoggingInterceptor() = HttpLoggingInterceptor()
.apply {
level = HttpLoggingInterceptor.Level.BODY
}
@Singleton
@Provides
fun providesOkHttpClient(httpLoggingInterceptor: HttpLoggingInterceptor): OkHttpClient =
OkHttpClient
.Builder()
.addInterceptor(httpLoggingInterceptor)
.addInterceptor(OAuthInterceptor("Bearer", "eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJjZmNmZDEyOThjNzRmMTgxZmJjNWQzMTlkNDNmNmRmNyIsInN1YiI6IjYzNWExNTM5OGQyZjhkMDA3ZDI2Y2JjOSIsInNjb3BlcyI6WyJhcGlfcmVhZCJdLCJ2ZXJzaW9uIjoxfQ.ugqOfcCJIJpDR0fVdXnBLjOXQRBdGPkUOtgKSEkM5KY"))
.build()
@Singleton
@Provides
fun provideRetrofit(okHttpClient: OkHttpClient): Retrofit = Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(BASE_URL)
.client(okHttpClient)
.build()
@Singleton
@Provides
fun provideApiService(retrofit: Retrofit): MoviesRemoteDataSource = retrofit.create(MoviesRemoteDataSource::class.java)
}
class OAuthInterceptor(private val tokenType: String, private val acceessToken: String) : Interceptor {
override fun intercept(chain: Interceptor.Chain): okhttp3.Response {
var request = chain.request()
request = request.newBuilder().header("Authorization", "$tokenType $acceessToken").build()
return chain.proceed(request)
}
}