From 7e507abf32f2dbce66e28dfc8f04cd5b1dbed7c1 Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Mon, 4 Oct 2021 11:08:24 +0200 Subject: [PATCH 1/3] add debug interceptor --- owncloudComLibrary/build.gradle | 1 + .../android/lib/common/http/DebugInterceptorFactory.kt | 9 +++++++++ .../android/lib/common/http/DummyInterceptor.kt | 10 ++++++++++ .../owncloud/android/lib/common/http/HttpClient.java | 9 +++++++++ .../android/lib/common/http/DebugInterceptorFactory.kt | 7 +++++++ 5 files changed, 36 insertions(+) create mode 100644 owncloudComLibrary/src/debug/java/com/owncloud/android/lib/common/http/DebugInterceptorFactory.kt create mode 100644 owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/DummyInterceptor.kt create mode 100644 owncloudComLibrary/src/release/java/com/owncloud/android/lib/common/http/DebugInterceptorFactory.kt diff --git a/owncloudComLibrary/build.gradle b/owncloudComLibrary/build.gradle index 98f4a691..f862a4fd 100644 --- a/owncloudComLibrary/build.gradle +++ b/owncloudComLibrary/build.gradle @@ -16,6 +16,7 @@ dependencies { testImplementation 'junit:junit:4.13.2' testImplementation 'org.robolectric:robolectric:4.7.3' + debugImplementation 'com.facebook.stetho:stetho-okhttp3:1.5.1' } android { diff --git a/owncloudComLibrary/src/debug/java/com/owncloud/android/lib/common/http/DebugInterceptorFactory.kt b/owncloudComLibrary/src/debug/java/com/owncloud/android/lib/common/http/DebugInterceptorFactory.kt new file mode 100644 index 00000000..00a599b0 --- /dev/null +++ b/owncloudComLibrary/src/debug/java/com/owncloud/android/lib/common/http/DebugInterceptorFactory.kt @@ -0,0 +1,9 @@ +package com.owncloud.android.lib.common.http + +import com.facebook.stetho.okhttp3.StethoInterceptor + +class DebugInterceptorFactory { + companion object { + fun getInterceptor() = StethoInterceptor() + } +} diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/DummyInterceptor.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/DummyInterceptor.kt new file mode 100644 index 00000000..e7dfe719 --- /dev/null +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/DummyInterceptor.kt @@ -0,0 +1,10 @@ +package com.owncloud.android.lib.common.http + +import okhttp3.Interceptor +import okhttp3.Response + +class DummyInterceptor : Interceptor { + override fun intercept(chain: Interceptor.Chain): Response { + return chain.proceed(chain.request()) + } +} \ No newline at end of file diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/HttpClient.java b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/HttpClient.java index 046dc711..989e8209 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/HttpClient.java +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/HttpClient.java @@ -58,6 +58,7 @@ public class HttpClient { private static Context sContext; private static HashMap> sCookieStore = new HashMap<>(); private static LogInterceptor sLogInterceptor; + private static DebugInterceptor sDebugInterceptor; public static OkHttpClient getOkHttpClient() { if (sOkHttpClient == null) { @@ -111,6 +112,7 @@ public class HttpClient { CookieJar cookieJar) { return new OkHttpClient.Builder() .addNetworkInterceptor(getLogInterceptor()) + .addNetworkInterceptor(DebugInterceptorFactory.Companion.getInterceptor()) .protocols(Collections.singletonList(Protocol.HTTP_1_1)) .readTimeout(HttpConstants.DEFAULT_DATA_TIMEOUT, TimeUnit.MILLISECONDS) .writeTimeout(HttpConstants.DEFAULT_DATA_TIMEOUT, TimeUnit.MILLISECONDS) @@ -129,6 +131,13 @@ public class HttpClient { return sLogInterceptor; } + public static DebugInterceptor getDebugInterceptor() { + if (sDebugInterceptor == null) { + sDebugInterceptor = new DebugInterceptor(); + } + return sDebugInterceptor; + } + public static List getCookiesFromUrl(HttpUrl httpUrl) { return sCookieStore.get(httpUrl.host()); } diff --git a/owncloudComLibrary/src/release/java/com/owncloud/android/lib/common/http/DebugInterceptorFactory.kt b/owncloudComLibrary/src/release/java/com/owncloud/android/lib/common/http/DebugInterceptorFactory.kt new file mode 100644 index 00000000..4521247f --- /dev/null +++ b/owncloudComLibrary/src/release/java/com/owncloud/android/lib/common/http/DebugInterceptorFactory.kt @@ -0,0 +1,7 @@ +package com.owncloud.android.lib.common.http + +class DebugInterceptorFactory { + companion object { + fun getInterceptor() = DummyInterceptor() + } +} \ No newline at end of file From 85a3918ff1fac944ed2513bf92f86c869ebed3be Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Fri, 8 Oct 2021 14:51:51 +0200 Subject: [PATCH 2/3] fix usage of debug interceptor --- .../owncloud/android/lib/common/http/HttpClient.java | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/HttpClient.java b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/HttpClient.java index 989e8209..6172a9a3 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/HttpClient.java +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/HttpClient.java @@ -31,6 +31,7 @@ import com.owncloud.android.lib.common.network.NetworkUtils; import okhttp3.Cookie; import okhttp3.CookieJar; import okhttp3.HttpUrl; +import okhttp3.Interceptor; import okhttp3.OkHttpClient; import okhttp3.Protocol; import okhttp3.TlsVersion; @@ -58,7 +59,7 @@ public class HttpClient { private static Context sContext; private static HashMap> sCookieStore = new HashMap<>(); private static LogInterceptor sLogInterceptor; - private static DebugInterceptor sDebugInterceptor; + private static Interceptor sDebugInterceptor; public static OkHttpClient getOkHttpClient() { if (sOkHttpClient == null) { @@ -131,13 +132,6 @@ public class HttpClient { return sLogInterceptor; } - public static DebugInterceptor getDebugInterceptor() { - if (sDebugInterceptor == null) { - sDebugInterceptor = new DebugInterceptor(); - } - return sDebugInterceptor; - } - public static List getCookiesFromUrl(HttpUrl httpUrl) { return sCookieStore.get(httpUrl.host()); } From 5619c1daf863928e01782684fb1428531633403a Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Wed, 2 Mar 2022 14:15:03 +0100 Subject: [PATCH 3/3] apply code cleanup according to review --- .../common/http/DebugInterceptorFactory.kt | 29 +++++++++++++++--- .../lib/common/http/DummyInterceptor.kt | 29 +++++++++++++++--- .../android/lib/common/http/HttpClient.java | 2 +- .../common/http/DebugInterceptorFactory.kt | 30 ++++++++++++++++--- 4 files changed, 77 insertions(+), 13 deletions(-) diff --git a/owncloudComLibrary/src/debug/java/com/owncloud/android/lib/common/http/DebugInterceptorFactory.kt b/owncloudComLibrary/src/debug/java/com/owncloud/android/lib/common/http/DebugInterceptorFactory.kt index 00a599b0..b92c9b5a 100644 --- a/owncloudComLibrary/src/debug/java/com/owncloud/android/lib/common/http/DebugInterceptorFactory.kt +++ b/owncloudComLibrary/src/debug/java/com/owncloud/android/lib/common/http/DebugInterceptorFactory.kt @@ -1,9 +1,30 @@ +/* ownCloud Android Library is available under MIT license + * Copyright (C) 2020 ownCloud GmbH. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + package com.owncloud.android.lib.common.http import com.facebook.stetho.okhttp3.StethoInterceptor -class DebugInterceptorFactory { - companion object { - fun getInterceptor() = StethoInterceptor() - } +object DebugInterceptorFactory { + fun getInterceptor() = StethoInterceptor() } diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/DummyInterceptor.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/DummyInterceptor.kt index e7dfe719..8a81b460 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/DummyInterceptor.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/DummyInterceptor.kt @@ -1,10 +1,31 @@ +/* ownCloud Android Library is available under MIT license + * Copyright (C) 2020 ownCloud GmbH. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ + package com.owncloud.android.lib.common.http import okhttp3.Interceptor -import okhttp3.Response class DummyInterceptor : Interceptor { - override fun intercept(chain: Interceptor.Chain): Response { - return chain.proceed(chain.request()) - } + override fun intercept(chain: Interceptor.Chain) = chain.proceed(chain.request()) } \ No newline at end of file diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/HttpClient.java b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/HttpClient.java index 6172a9a3..ed1dd847 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/HttpClient.java +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/HttpClient.java @@ -113,7 +113,7 @@ public class HttpClient { CookieJar cookieJar) { return new OkHttpClient.Builder() .addNetworkInterceptor(getLogInterceptor()) - .addNetworkInterceptor(DebugInterceptorFactory.Companion.getInterceptor()) + .addNetworkInterceptor(DebugInterceptorFactory.INSTANCE.getInterceptor()) .protocols(Collections.singletonList(Protocol.HTTP_1_1)) .readTimeout(HttpConstants.DEFAULT_DATA_TIMEOUT, TimeUnit.MILLISECONDS) .writeTimeout(HttpConstants.DEFAULT_DATA_TIMEOUT, TimeUnit.MILLISECONDS) diff --git a/owncloudComLibrary/src/release/java/com/owncloud/android/lib/common/http/DebugInterceptorFactory.kt b/owncloudComLibrary/src/release/java/com/owncloud/android/lib/common/http/DebugInterceptorFactory.kt index 4521247f..713bdca3 100644 --- a/owncloudComLibrary/src/release/java/com/owncloud/android/lib/common/http/DebugInterceptorFactory.kt +++ b/owncloudComLibrary/src/release/java/com/owncloud/android/lib/common/http/DebugInterceptorFactory.kt @@ -1,7 +1,29 @@ +/* ownCloud Android Library is available under MIT license + * Copyright (C) 2020 ownCloud GmbH. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ + package com.owncloud.android.lib.common.http -class DebugInterceptorFactory { - companion object { - fun getInterceptor() = DummyInterceptor() - } +object DebugInterceptorFactory { + fun getInterceptor() = DummyInterceptor() } \ No newline at end of file