diff --git a/subsonic-api/src/main/kotlin/org/moire/ultrasonic/api/subsonic/SubsonicAPIClient.kt b/subsonic-api/src/main/kotlin/org/moire/ultrasonic/api/subsonic/SubsonicAPIClient.kt index 6f407576..691a31d3 100644 --- a/subsonic-api/src/main/kotlin/org/moire/ultrasonic/api/subsonic/SubsonicAPIClient.kt +++ b/subsonic-api/src/main/kotlin/org/moire/ultrasonic/api/subsonic/SubsonicAPIClient.kt @@ -36,7 +36,8 @@ private const val READ_TIMEOUT = 60_000L * @author Yahor Berdnikau */ class SubsonicAPIClient( - config: SubsonicClientConfiguration + config: SubsonicClientConfiguration, + baseOkClient: OkHttpClient = OkHttpClient.Builder().build() ) { private val versionInterceptor = VersionInterceptor(config.minimalProtocolVersion) { protocolVersion = it @@ -59,7 +60,7 @@ class SubsonicAPIClient( wrappedApi.currentApiVersion = field } - private val okHttpClient = OkHttpClient.Builder() + private val okHttpClient = baseOkClient.newBuilder() .readTimeout(READ_TIMEOUT, MILLISECONDS) .apply { if (config.allowSelfSignedCertificate) allowSelfSignedCertificates() } .addInterceptor { chain -> diff --git a/subsonic-api/src/main/kotlin/org/moire/ultrasonic/api/subsonic/di/SubsonicApiModule.kt b/subsonic-api/src/main/kotlin/org/moire/ultrasonic/api/subsonic/di/SubsonicApiModule.kt index 3e3ac397..200b6328 100644 --- a/subsonic-api/src/main/kotlin/org/moire/ultrasonic/api/subsonic/di/SubsonicApiModule.kt +++ b/subsonic-api/src/main/kotlin/org/moire/ultrasonic/api/subsonic/di/SubsonicApiModule.kt @@ -6,5 +6,5 @@ import org.moire.ultrasonic.api.subsonic.SubsonicAPIClient const val SUBSONIC_API_CLIENT_CONTEXT = "SubsonicApiClientContext" fun Context.subsonicApiModule() = context(SUBSONIC_API_CLIENT_CONTEXT) { - bean { return@bean SubsonicAPIClient(get()) } + bean { return@bean SubsonicAPIClient(get(), get()) } } diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/app/UApp.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/app/UApp.kt index db151566..f8bb9d24 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/app/UApp.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/app/UApp.kt @@ -2,6 +2,7 @@ package org.moire.ultrasonic.app import android.app.Application import org.koin.android.ext.android.startKoin +import org.moire.ultrasonic.di.baseNetworkModule import org.moire.ultrasonic.di.directoriesModule import org.moire.ultrasonic.di.musicServiceModule import org.moire.ultrasonic.util.Util @@ -13,6 +14,7 @@ class UApp : Application() { val sharedPreferences = Util.getPreferences(this) startKoin(this, listOf( directoriesModule, + baseNetworkModule, musicServiceModule(sharedPreferences) )) } diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/di/BaseNetworkModule.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/di/BaseNetworkModule.kt new file mode 100644 index 00000000..0455ff53 --- /dev/null +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/di/BaseNetworkModule.kt @@ -0,0 +1,11 @@ +package org.moire.ultrasonic.di + +import okhttp3.OkHttpClient +import org.koin.dsl.module.applicationContext + +/** + * Provides base network dependencies. + */ +val baseNetworkModule = applicationContext { + bean { OkHttpClient.Builder().build() } +}