Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ local.properties
# Log/OS Files
*.log

# Claude
.claude/

# Android Studio generated files and folders
captures/
.externalNativeBuild/
Expand Down
3 changes: 3 additions & 0 deletions android/demo-app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,9 @@ dependencies {

implementation libs.stadiamaps.autocomplete.search

// Chucker - For Network Interceptor
implementation "com.github.chuckerteam.chucker:library:4.3.1"

testImplementation libs.junit
androidTestImplementation libs.androidx.test.junit
androidTestImplementation libs.androidx.test.espresso
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import com.stadiamaps.ferrostar.core.service.FerrostarForegroundServiceManager
import com.stadiamaps.ferrostar.core.service.ForegroundServiceManager
import com.stadiamaps.ferrostar.core.withJsonOptions
import com.stadiamaps.ferrostar.googleplayservices.FusedLocationProvider
import com.stadiamaps.ferrostar.network.CustomChuckerInterceptor
import java.time.Duration
import java.time.Instant
import okhttp3.OkHttpClient
Expand Down Expand Up @@ -91,7 +92,9 @@ object AppModule {
}
}
private val httpClient: HttpClientProvider by lazy {
OkHttpClient.Builder().callTimeout(Duration.ofSeconds(15)).build().toOkHttpClientProvider()
OkHttpClient.Builder()
.addInterceptor(CustomChuckerInterceptor(appContext).build())
.callTimeout(Duration.ofSeconds(15)).build().toOkHttpClientProvider()
}

private val foregroundServiceManager: ForegroundServiceManager by lazy {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.stadiamaps.ferrostar.network

import android.content.Context
import com.chuckerteam.chucker.api.ChuckerCollector
import com.chuckerteam.chucker.api.ChuckerInterceptor
import com.chuckerteam.chucker.api.RetentionManager

/** See: https://github.com/ChuckerTeam/chucker */
class CustomChuckerInterceptor(private val context: Context) {
private val chuckerCollector by lazy {
ChuckerCollector(
context = context,
showNotification = true,
retentionPeriod = RetentionManager.Period.ONE_HOUR,
)
}

private val chuckerInterceptor: ChuckerInterceptor by lazy {
ChuckerInterceptor.Builder(context)
.collector(chuckerCollector)
.maxContentLength(250_000L)
.redactHeaders("Auth-Token", "Bearer")
.alwaysReadResponseBody(true)
.createShortcut(true)
.build()
}

fun build(): ChuckerInterceptor {
return chuckerInterceptor
}
}
Loading
Loading