Skip to content

Commit

Permalink
[feat] #7 network di
Browse files Browse the repository at this point in the history
  • Loading branch information
Sangwook123 committed May 3, 2024
1 parent e8e529b commit 4327df3
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 0 deletions.
72 changes: 72 additions & 0 deletions core/network/src/main/java/org/sopt/network/di/NetworkModule.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package org.sopt.network.di

import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import kotlinx.serialization.json.Json
import okhttp3.Interceptor
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import org.sopt.network.BuildConfig.AUTH_BASE_URL
import org.sopt.network.BuildConfig.REQRES_BASE_URL
import org.sopt.network.interceptor.AuthInterceptor
import retrofit2.Retrofit
import javax.inject.Singleton

@Module
@InstallIn(SingletonComponent::class)
object NetworkModule {
@Provides
@Singleton
fun provideLoggingInterceptor(): HttpLoggingInterceptor = HttpLoggingInterceptor().apply {
level = HttpLoggingInterceptor.Level.BODY
}

@Provides
@Singleton
fun provideAuthInterceptor(interceptor: AuthInterceptor): Interceptor = interceptor

@Provides
@Singleton
@Auth
fun provideAuthOkHttpClient(
loggingInterceptor: HttpLoggingInterceptor,
authInterceptor: Interceptor,
): OkHttpClient =
OkHttpClient.Builder()
.retryOnConnectionFailure(true)
.addInterceptor(authInterceptor)
.addInterceptor(loggingInterceptor)
.build()

@Provides
@Singleton
@Reqres
fun provideReqresOkHttpClient(
loggingInterceptor: HttpLoggingInterceptor,
): OkHttpClient =
OkHttpClient.Builder()
.addInterceptor(loggingInterceptor)
.build()

@Provides
@Singleton
@Auth
fun provideAuthRetrofit(@Auth okHttpClient: OkHttpClient): Retrofit = Retrofit.Builder()
.addConverterFactory(Json.asConverterFactory("application/json".toMediaType()))
.baseUrl(AUTH_BASE_URL)
.client(okHttpClient)
.build()

@Provides
@Singleton
@Reqres
fun provideReqresRetrofit(@Reqres okHttpClient: OkHttpClient): Retrofit = Retrofit.Builder()
.addConverterFactory(Json.asConverterFactory("application/json".toMediaType()))
.baseUrl(REQRES_BASE_URL)
.client(okHttpClient)
.build()
}
11 changes: 11 additions & 0 deletions core/network/src/main/java/org/sopt/network/di/Qualifier.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package org.sopt.network.di

import javax.inject.Qualifier

@Qualifier
@Retention(AnnotationRetention.BINARY)
annotation class Reqres

@Qualifier
@Retention(AnnotationRetention.BINARY)
annotation class Auth

0 comments on commit 4327df3

Please sign in to comment.