From 23bc417ba4c746eaa425636dad5e82d53b3a6da6 Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Fri, 18 Oct 2019 16:26:24 +0200 Subject: [PATCH] Fix file uploads Signed-off-by: Mario Danic --- app/build.gradle | 10 ++-- .../filebrowser/models/BrowserFile.java | 12 ++--- .../filebrowser/models/DavResponse.java | 2 +- .../models/properties/NCEncrypted.java | 6 +-- .../models/properties/NCPreview.java | 6 +-- .../models/properties/OCFavorite.java | 6 +-- .../filebrowser/models/properties/OCId.java | 6 +-- .../filebrowser/models/properties/OCSize.java | 6 +-- .../filebrowser/webdav/DavUtils.java | 47 +++++++------------ .../webdav/ReadFilesystemOperation.java | 6 +-- .../talk/controllers/ChatController.kt | 2 +- .../talk/newarch/di/module/NetworkModule.kt | 2 +- .../talk/newarch/utils/NetworkUtils.kt | 12 ++--- 13 files changed, 54 insertions(+), 69 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index ae6bd7f8a..302f9d27e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -197,9 +197,7 @@ dependencies { implementation "android.arch.work:work-rxjava2:${work_version}" implementation 'com.google.android:flexbox:1.1.0' androidTestImplementation "android.arch.work:work-testing:${work_version}" - implementation ('com.gitlab.bitfireAT:dav4jvm:f2078bc846', { - exclude group: 'org.ogce', module: 'xpp3' // Android comes with its own XmlPullParser - }) + implementation 'com.gitlab.bitfireAT:dav4jvm:ee66e8e5' implementation 'org.conscrypt:conscrypt-android:2.2.1' implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0' @@ -219,9 +217,9 @@ dependencies { implementation 'com.bluelinelabs:conductor-autodispose:3.0.0-rc2' implementation "com.github.miquelbeltran:conductor-viewmodel:1.0.3" - implementation 'com.squareup.okhttp3:okhttp:4.2.2' - implementation 'com.squareup.okhttp3:okhttp-urlconnection:4.2.2' - implementation 'com.squareup.okhttp3:logging-interceptor:4.2.2' + implementation 'com.squareup.okhttp3:okhttp:3.14.4' + implementation 'com.squareup.okhttp3:okhttp-urlconnection:3.14.4' + implementation 'com.squareup.okhttp3:logging-interceptor:3.14.4' implementation 'com.squareup.retrofit2:retrofit:2.6.2' implementation 'com.squareup.retrofit2:adapter-rxjava2:2.6.2' diff --git a/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/BrowserFile.java b/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/BrowserFile.java index 7260acb26..d860886d2 100644 --- a/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/BrowserFile.java +++ b/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/BrowserFile.java @@ -22,12 +22,12 @@ package com.nextcloud.talk.components.filebrowser.models; import android.net.Uri; import android.text.TextUtils; -import at.bitfire.dav4android.Property; -import at.bitfire.dav4android.Response; -import at.bitfire.dav4android.property.DisplayName; -import at.bitfire.dav4android.property.GetContentType; -import at.bitfire.dav4android.property.GetLastModified; -import at.bitfire.dav4android.property.ResourceType; +import at.bitfire.dav4jvm.Property; +import at.bitfire.dav4jvm.Response; +import at.bitfire.dav4jvm.property.DisplayName; +import at.bitfire.dav4jvm.property.GetContentType; +import at.bitfire.dav4jvm.property.GetLastModified; +import at.bitfire.dav4jvm.property.ResourceType; import com.bluelinelabs.logansquare.annotation.JsonObject; import com.nextcloud.talk.components.filebrowser.models.properties.NCEncrypted; import com.nextcloud.talk.components.filebrowser.models.properties.NCPreview; diff --git a/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/DavResponse.java b/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/DavResponse.java index 934d45431..5b9b8c46a 100644 --- a/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/DavResponse.java +++ b/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/DavResponse.java @@ -20,7 +20,7 @@ package com.nextcloud.talk.components.filebrowser.models; -import at.bitfire.dav4android.Response; +import at.bitfire.dav4jvm.Response; import lombok.Data; @Data diff --git a/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/NCEncrypted.java b/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/NCEncrypted.java index b665296b9..8d67a2864 100644 --- a/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/NCEncrypted.java +++ b/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/NCEncrypted.java @@ -21,9 +21,9 @@ package com.nextcloud.talk.components.filebrowser.models.properties; import android.text.TextUtils; -import at.bitfire.dav4android.Property; -import at.bitfire.dav4android.PropertyFactory; -import at.bitfire.dav4android.XmlUtils; +import at.bitfire.dav4jvm.Property; +import at.bitfire.dav4jvm.PropertyFactory; +import at.bitfire.dav4jvm.XmlUtils; import com.nextcloud.talk.components.filebrowser.webdav.DavUtils; import java.io.IOException; import lombok.Getter; diff --git a/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/NCPreview.java b/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/NCPreview.java index ce2120bb5..8aa376c6b 100644 --- a/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/NCPreview.java +++ b/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/NCPreview.java @@ -21,9 +21,9 @@ package com.nextcloud.talk.components.filebrowser.models.properties; import android.text.TextUtils; -import at.bitfire.dav4android.Property; -import at.bitfire.dav4android.PropertyFactory; -import at.bitfire.dav4android.XmlUtils; +import at.bitfire.dav4jvm.Property; +import at.bitfire.dav4jvm.PropertyFactory; +import at.bitfire.dav4jvm.XmlUtils; import com.nextcloud.talk.components.filebrowser.webdav.DavUtils; import java.io.IOException; import lombok.Getter; diff --git a/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCFavorite.java b/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCFavorite.java index 02ba71f9d..2079614e1 100644 --- a/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCFavorite.java +++ b/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCFavorite.java @@ -21,9 +21,9 @@ package com.nextcloud.talk.components.filebrowser.models.properties; import android.text.TextUtils; -import at.bitfire.dav4android.Property; -import at.bitfire.dav4android.PropertyFactory; -import at.bitfire.dav4android.XmlUtils; +import at.bitfire.dav4jvm.Property; +import at.bitfire.dav4jvm.PropertyFactory; +import at.bitfire.dav4jvm.XmlUtils; import com.nextcloud.talk.components.filebrowser.webdav.DavUtils; import java.io.IOException; import lombok.Getter; diff --git a/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCId.java b/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCId.java index 7172b8b63..2219613bd 100644 --- a/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCId.java +++ b/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCId.java @@ -21,9 +21,9 @@ package com.nextcloud.talk.components.filebrowser.models.properties; import android.text.TextUtils; -import at.bitfire.dav4android.Property; -import at.bitfire.dav4android.PropertyFactory; -import at.bitfire.dav4android.XmlUtils; +import at.bitfire.dav4jvm.Property; +import at.bitfire.dav4jvm.PropertyFactory; +import at.bitfire.dav4jvm.XmlUtils; import com.nextcloud.talk.components.filebrowser.webdav.DavUtils; import java.io.IOException; import lombok.Getter; diff --git a/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCSize.java b/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCSize.java index 0054860bb..8f11c8808 100644 --- a/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCSize.java +++ b/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCSize.java @@ -21,9 +21,9 @@ package com.nextcloud.talk.components.filebrowser.models.properties; import android.text.TextUtils; -import at.bitfire.dav4android.Property; -import at.bitfire.dav4android.PropertyFactory; -import at.bitfire.dav4android.XmlUtils; +import at.bitfire.dav4jvm.Property; +import at.bitfire.dav4jvm.PropertyFactory; +import at.bitfire.dav4jvm.XmlUtils; import com.nextcloud.talk.components.filebrowser.webdav.DavUtils; import java.io.IOException; import lombok.Getter; diff --git a/app/src/main/java/com/nextcloud/talk/components/filebrowser/webdav/DavUtils.java b/app/src/main/java/com/nextcloud/talk/components/filebrowser/webdav/DavUtils.java index 8693f4063..a0296b0b7 100644 --- a/app/src/main/java/com/nextcloud/talk/components/filebrowser/webdav/DavUtils.java +++ b/app/src/main/java/com/nextcloud/talk/components/filebrowser/webdav/DavUtils.java @@ -20,26 +20,23 @@ package com.nextcloud.talk.components.filebrowser.webdav; -import at.bitfire.dav4android.Property; -import at.bitfire.dav4android.PropertyFactory; -import at.bitfire.dav4android.PropertyRegistry; -import at.bitfire.dav4android.property.CreationDate; -import at.bitfire.dav4android.property.DisplayName; -import at.bitfire.dav4android.property.GetContentLength; -import at.bitfire.dav4android.property.GetContentType; -import at.bitfire.dav4android.property.GetETag; -import at.bitfire.dav4android.property.GetLastModified; -import at.bitfire.dav4android.property.ResourceType; +import at.bitfire.dav4jvm.Property; +import at.bitfire.dav4jvm.PropertyFactory; +import at.bitfire.dav4jvm.PropertyRegistry; +import at.bitfire.dav4jvm.property.CreationDate; +import at.bitfire.dav4jvm.property.DisplayName; +import at.bitfire.dav4jvm.property.GetContentLength; +import at.bitfire.dav4jvm.property.GetContentType; +import at.bitfire.dav4jvm.property.GetETag; +import at.bitfire.dav4jvm.property.GetLastModified; +import at.bitfire.dav4jvm.property.ResourceType; import com.nextcloud.talk.components.filebrowser.models.properties.NCEncrypted; import com.nextcloud.talk.components.filebrowser.models.properties.NCPreview; import com.nextcloud.talk.components.filebrowser.models.properties.OCFavorite; import com.nextcloud.talk.components.filebrowser.models.properties.OCId; import com.nextcloud.talk.components.filebrowser.models.properties.OCSize; -import java.lang.reflect.Field; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; public class DavUtils { public static final String OC_NAMESPACE = "http://owncloud.org/ns"; @@ -95,23 +92,13 @@ public class DavUtils { public static void registerCustomFactories() { PropertyRegistry propertyRegistry = PropertyRegistry.INSTANCE; - try { - Field factories = propertyRegistry.getClass().getDeclaredField("factories"); - factories.setAccessible(true); - Map reflectionMap = (HashMap) factories.get(propertyRegistry); + List propertyFactories = new ArrayList<>(); + propertyFactories.add(new OCId.Factory()); + propertyFactories.add(new NCPreview.Factory()); + propertyFactories.add(new NCEncrypted.Factory()); + propertyFactories.add(new OCFavorite.Factory()); + propertyFactories.add(new OCSize.Factory()); - reflectionMap.put(OCId.NAME, new OCId.Factory()); - reflectionMap.put(NCPreview.NAME, new NCPreview.Factory()); - reflectionMap.put(NCEncrypted.NAME, new NCEncrypted.Factory()); - reflectionMap.put(OCFavorite.NAME, new OCFavorite.Factory()); - reflectionMap.put(OCSize.NAME, new OCSize.Factory()); - - factories.set(propertyRegistry, reflectionMap); - } catch (NoSuchFieldException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } + propertyRegistry.register(propertyFactories); } } diff --git a/app/src/main/java/com/nextcloud/talk/components/filebrowser/webdav/ReadFilesystemOperation.java b/app/src/main/java/com/nextcloud/talk/components/filebrowser/webdav/ReadFilesystemOperation.java index 00baed7c3..96f3de00f 100644 --- a/app/src/main/java/com/nextcloud/talk/components/filebrowser/webdav/ReadFilesystemOperation.java +++ b/app/src/main/java/com/nextcloud/talk/components/filebrowser/webdav/ReadFilesystemOperation.java @@ -20,9 +20,9 @@ package com.nextcloud.talk.components.filebrowser.webdav; -import at.bitfire.dav4android.DavResource; -import at.bitfire.dav4android.Response; -import at.bitfire.dav4android.exception.DavException; +import at.bitfire.dav4jvm.DavResource; +import at.bitfire.dav4jvm.Response; +import at.bitfire.dav4jvm.exception.DavException; import com.nextcloud.talk.components.filebrowser.models.BrowserFile; import com.nextcloud.talk.components.filebrowser.models.DavResponse; import com.nextcloud.talk.dagger.modules.RestModule; diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt index 1187f8954..6726b7b37 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt @@ -1137,7 +1137,7 @@ class ChatController(args: Bundle) : BaseController(), MessagesListAdapter ) { val xChatLastGivenHeader: String? = response.headers() .get("X-Chat-Last-Given") - if (response.headers().size > 0 && !TextUtils.isEmpty(xChatLastGivenHeader)) { + if (response.headers().size() > 0 && !TextUtils.isEmpty(xChatLastGivenHeader)) { val header = Integer.parseInt(xChatLastGivenHeader!!) if (header > 0) { diff --git a/app/src/main/java/com/nextcloud/talk/newarch/di/module/NetworkModule.kt b/app/src/main/java/com/nextcloud/talk/newarch/di/module/NetworkModule.kt index 1555da125..cfd3548c2 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/di/module/NetworkModule.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/di/module/NetworkModule.kt @@ -112,7 +112,7 @@ fun createOkHttpClient( // Trust own CA and all self-signed certs httpClient.sslSocketFactory(sslSocketFactoryCompat, magicTrustManager) httpClient.retryOnConnectionFailure(true) - httpClient.hostnameVerifier(magicTrustManager.getHostnameVerifier(OkHostnameVerifier)) + httpClient.hostnameVerifier(magicTrustManager.getHostnameVerifier(OkHostnameVerifier.INSTANCE)) httpClient.dispatcher(dispatcher) if (Proxy.NO_PROXY != proxy) { diff --git a/app/src/main/java/com/nextcloud/talk/newarch/utils/NetworkUtils.kt b/app/src/main/java/com/nextcloud/talk/newarch/utils/NetworkUtils.kt index 5bef4296f..95b5a4373 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/utils/NetworkUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/utils/NetworkUtils.kt @@ -45,14 +45,14 @@ class NetworkUtils { .header("User-Agent", ApiUtils.getUserAgent()) .header("Accept", "application/json") .header("OCS-APIRequest", "true") - .method(original.method, original.body) + .method(original.method(), original.body()) .build() val response = chain.proceed(request) - if (request.url.encodedPath.contains("/avatar/")) { + if (request.url().encodedPath().contains("/avatar/")) { AvatarStatusCodeHolder.getInstance() - .statusCode = response.code + .statusCode = response.code() } return response @@ -68,7 +68,7 @@ class NetworkUtils { route: Route?, response: Response ): Request? { - if (response.request.header(authenticatorType) != null) { + if (response.request().header(authenticatorType) != null) { return null } @@ -77,13 +77,13 @@ class NetworkUtils { var attemptsCount = 0 - while ({ countedResponse = countedResponse?.priorResponse; countedResponse }() != null) { + while ({ countedResponse = countedResponse?.priorResponse(); countedResponse }() != null) { attemptsCount++ if (attemptsCount == 3) { return null } } - return response.request.newBuilder() + return response.request().newBuilder() .header(authenticatorType, credentials) .build() }