diff --git a/app/build.gradle b/app/build.gradle index 364a4d9..d905677 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,6 +61,10 @@ dependencies { implementation "com.squareup.retrofit2:retrofit:2.9.0" implementation "com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:0.8.0" + def okhttp_version = "4.9.2" + implementation "com.squareup.okhttp3:okhttp:$okhttp_version" + implementation "com.squareup.okhttp3:logging-interceptor:$okhttp_version" + implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.0" implementation "androidx.preference:preference-ktx:1.1.1" diff --git a/app/src/main/java/gq/kirmanak/mealie/data/OkHttpBuilder.kt b/app/src/main/java/gq/kirmanak/mealie/data/OkHttpBuilder.kt new file mode 100644 index 0000000..5b3e48b --- /dev/null +++ b/app/src/main/java/gq/kirmanak/mealie/data/OkHttpBuilder.kt @@ -0,0 +1,21 @@ +package gq.kirmanak.mealie.data + +import okhttp3.Interceptor +import okhttp3.OkHttpClient +import okhttp3.logging.HttpLoggingInterceptor +import timber.log.Timber +import javax.inject.Inject + +class OkHttpBuilder @Inject constructor() { + fun buildOkHttp(): OkHttpClient { + return OkHttpClient.Builder() + .addNetworkInterceptor(buildLoggingInterceptor()) + .build() + } + + private fun buildLoggingInterceptor() : Interceptor { + val interceptor = HttpLoggingInterceptor { message -> Timber.v(message) } + interceptor.level = HttpLoggingInterceptor.Level.BODY + return interceptor + } +} \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealie/data/RetrofitBuilder.kt b/app/src/main/java/gq/kirmanak/mealie/data/RetrofitBuilder.kt index 41da096..fbcf519 100644 --- a/app/src/main/java/gq/kirmanak/mealie/data/RetrofitBuilder.kt +++ b/app/src/main/java/gq/kirmanak/mealie/data/RetrofitBuilder.kt @@ -3,19 +3,20 @@ package gq.kirmanak.mealie.data import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.Json -import okhttp3.MediaType +import okhttp3.MediaType.Companion.toMediaType import retrofit2.Retrofit import timber.log.Timber import javax.inject.Inject @ExperimentalSerializationApi -class RetrofitBuilder @Inject constructor() { +class RetrofitBuilder @Inject constructor(private val okHttpBuilder: OkHttpBuilder) { fun buildRetrofit(baseUrl: String): Retrofit { Timber.v("buildRetrofit() called with: baseUrl = $baseUrl") val url = if (baseUrl.startsWith("http")) baseUrl else "https://$baseUrl" val contentType = "application/json".toMediaType() return Retrofit.Builder() .baseUrl(url) + .client(okHttpBuilder.buildOkHttp()) .addConverterFactory(Json.asConverterFactory(contentType)) .build() }