refactor(android): merge all OkHttp bindings into a single class

This commit is contained in:
Harsh Shandilya 2022-09-06 18:21:33 +05:30
parent ffce663f6f
commit cffb2bdbb2
No known key found for this signature in database
2 changed files with 41 additions and 50 deletions

View file

@ -1,20 +0,0 @@
package dev.msfjarvis.claw.android.injection
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import dagger.multibindings.IntoSet
import dev.msfjarvis.claw.android.network.NapierLogger
import dev.msfjarvis.claw.android.network.UserAgentInterceptor
import okhttp3.Interceptor
import okhttp3.logging.HttpLoggingInterceptor
@Module
@InstallIn(SingletonComponent::class)
interface InterceptorModule {
@Binds fun NapierLogger.bindLogger(): HttpLoggingInterceptor.Logger
@Binds @IntoSet fun UserAgentInterceptor.bindUAInterceptor(): Interceptor
}

View file

@ -2,6 +2,7 @@ package dev.msfjarvis.claw.android.injection
import android.content.Context
import android.net.TrafficStats
import dagger.Binds
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
@ -9,6 +10,8 @@ import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
import dagger.multibindings.IntoSet
import dev.msfjarvis.claw.android.network.DelegatingSocketFactory
import dev.msfjarvis.claw.android.network.NapierLogger
import dev.msfjarvis.claw.android.network.UserAgentInterceptor
import java.net.Socket
import javax.net.SocketFactory
import okhttp3.Cache
@ -18,40 +21,48 @@ import okhttp3.logging.HttpLoggingInterceptor
@Module
@InstallIn(SingletonComponent::class)
object OkHttpModule {
@Provides
fun provideCache(@ApplicationContext context: Context): Cache {
return Cache(context.cacheDir, 10 * 1024 * 1024)
}
abstract class OkHttpModule {
@Provides
fun provideSocketFactory(): SocketFactory {
return object : DelegatingSocketFactory(getDefault()) {
override fun configureSocket(socket: Socket): Socket {
TrafficStats.setThreadStatsTag(0x000090000)
return super.configureSocket(socket)
}
@Binds abstract fun NapierLogger.bindLogger(): HttpLoggingInterceptor.Logger
@Binds @IntoSet abstract fun UserAgentInterceptor.bindUAInterceptor(): Interceptor
companion object {
@Provides
fun provideCache(@ApplicationContext context: Context): Cache {
return Cache(context.cacheDir, 10 * 1024 * 1024)
}
}
@Provides
fun provideClient(
cache: Cache,
socketFactory: SocketFactory,
interceptors: Set<@JvmSuppressWildcards Interceptor>,
): OkHttpClient {
return OkHttpClient.Builder()
.apply {
cache(cache)
interceptors.forEach(::addNetworkInterceptor)
socketFactory(socketFactory)
@Provides
fun provideSocketFactory(): SocketFactory {
return object : DelegatingSocketFactory(getDefault()) {
override fun configureSocket(socket: Socket): Socket {
TrafficStats.setThreadStatsTag(0x000090000)
return super.configureSocket(socket)
}
}
.build()
}
}
@Provides
fun provideClient(
cache: Cache,
socketFactory: SocketFactory,
interceptors: Set<@JvmSuppressWildcards Interceptor>,
): OkHttpClient {
return OkHttpClient.Builder()
.apply {
cache(cache)
interceptors.forEach(::addNetworkInterceptor)
socketFactory(socketFactory)
}
.build()
}
@Provides
@IntoSet
fun provideHttpLoggingInterceptor(logger: HttpLoggingInterceptor.Logger): Interceptor {
return HttpLoggingInterceptor(logger).setLevel(HttpLoggingInterceptor.Level.HEADERS)
@Provides
@IntoSet
fun provideHttpLoggingInterceptor(logger: HttpLoggingInterceptor.Logger): Interceptor {
return HttpLoggingInterceptor(logger).setLevel(HttpLoggingInterceptor.Level.HEADERS)
}
}
}