diff --git a/app/src/androidTest/java/org/scottishtecharmy/soundscape/MvtPerformanceTest.kt b/app/src/androidTest/java/org/scottishtecharmy/soundscape/MvtPerformanceTest.kt index ebb2fa8a5..8a4e00a55 100644 --- a/app/src/androidTest/java/org/scottishtecharmy/soundscape/MvtPerformanceTest.kt +++ b/app/src/androidTest/java/org/scottishtecharmy/soundscape/MvtPerformanceTest.kt @@ -112,8 +112,8 @@ class MvtPerformanceTest { // Test the capital of Cameroon because it's dense println("Test Yaoundé") - for(x in 17430 until 17437) { - for(y in 16029 until 16034) { + for(x in 17430/2 until 17437/2) { + for(y in 16029/2 until 16034/2) { downloadAndParseTile(x, y, gridState) } } diff --git a/app/src/main/java/org/scottishtecharmy/soundscape/network/ManifestClient.kt b/app/src/main/java/org/scottishtecharmy/soundscape/network/ManifestClient.kt index 956230d2b..a31bd0587 100644 --- a/app/src/main/java/org/scottishtecharmy/soundscape/network/ManifestClient.kt +++ b/app/src/main/java/org/scottishtecharmy/soundscape/network/ManifestClient.kt @@ -25,6 +25,7 @@ class ManifestClient(val applicationContext: Context) { private var retrofit : Retrofit? = null private val okHttpClient = OkHttpClient.Builder() + .addInterceptor(UserAgentInterceptor()) .addInterceptor { chain -> val response = chain.proceed(chain.request()) diff --git a/app/src/main/java/org/scottishtecharmy/soundscape/network/SearchProvider.kt b/app/src/main/java/org/scottishtecharmy/soundscape/network/SearchProvider.kt index fe0573ff0..e4752a462 100644 --- a/app/src/main/java/org/scottishtecharmy/soundscape/network/SearchProvider.kt +++ b/app/src/main/java/org/scottishtecharmy/soundscape/network/SearchProvider.kt @@ -62,6 +62,7 @@ interface PhotonSearchProvider { } } private val logging = OkHttpClient.Builder() + .addInterceptor(UserAgentInterceptor()) .addInterceptor(loggingInterceptor) .callTimeout(5, TimeUnit.SECONDS) .build() diff --git a/app/src/main/java/org/scottishtecharmy/soundscape/network/TileClient.kt b/app/src/main/java/org/scottishtecharmy/soundscape/network/TileClient.kt index 4de6a2ce9..ec9aadf33 100644 --- a/app/src/main/java/org/scottishtecharmy/soundscape/network/TileClient.kt +++ b/app/src/main/java/org/scottishtecharmy/soundscape/network/TileClient.kt @@ -23,6 +23,7 @@ abstract class TileClient(val applicationContext: Context) { protected val okHttpClient = OkHttpClient.Builder() .cache(myCache) + .addInterceptor(UserAgentInterceptor()) .addInterceptor { chain -> // Get the request from the chain. diff --git a/app/src/main/java/org/scottishtecharmy/soundscape/network/UserAgentInterceptor.kt b/app/src/main/java/org/scottishtecharmy/soundscape/network/UserAgentInterceptor.kt new file mode 100644 index 000000000..821595237 --- /dev/null +++ b/app/src/main/java/org/scottishtecharmy/soundscape/network/UserAgentInterceptor.kt @@ -0,0 +1,23 @@ +package org.scottishtecharmy.soundscape.network + +import okhttp3.Interceptor +import okhttp3.Response +import org.scottishtecharmy.soundscape.BuildConfig + +class UserAgentInterceptor : Interceptor { + override fun intercept(chain: Interceptor.Chain): Response { + val request = chain.request().newBuilder() + .header("User-Agent", USER_AGENT) + .build() + return chain.proceed(request) + } + + companion object { + val USER_AGENT: String = buildString { + append("Soundscape/${BuildConfig.VERSION_NAME}") + if (BuildConfig.BUILD_TYPE == "releaseTest") { + append(" (unit tests)") + } + } + } +} diff --git a/app/src/main/java/org/scottishtecharmy/soundscape/utils/OfflineDownloader.kt b/app/src/main/java/org/scottishtecharmy/soundscape/utils/OfflineDownloader.kt index 81c0a5aa0..a5ee94601 100644 --- a/app/src/main/java/org/scottishtecharmy/soundscape/utils/OfflineDownloader.kt +++ b/app/src/main/java/org/scottishtecharmy/soundscape/utils/OfflineDownloader.kt @@ -14,6 +14,7 @@ import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import okhttp3.OkHttpClient +import org.scottishtecharmy.soundscape.network.UserAgentInterceptor import okhttp3.ResponseBody import org.scottishtecharmy.soundscape.geojsonparser.geojson.FeatureCollection import org.scottishtecharmy.soundscape.network.IDownloadService @@ -82,6 +83,7 @@ class OfflineDownloader { init { // We want a long timeout here to allow for network caching to happen behind the scenes val okHttpClient = OkHttpClient.Builder() + .addInterceptor(UserAgentInterceptor()) .connectTimeout(3, TimeUnit.MINUTES) .readTimeout(3, TimeUnit.MINUTES) .build()