mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-13 19:37:00 +05:30
refactor(android): merge all OkHttp bindings into a single class
This commit is contained in:
parent
ffce663f6f
commit
cffb2bdbb2
2 changed files with 41 additions and 50 deletions
|
@ -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
|
||||
}
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue