diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/HttpConstants.java b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/HttpConstants.java index 091643ab..8978a556 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/HttpConstants.java +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/HttpConstants.java @@ -184,6 +184,7 @@ public class HttpConstants { public static final int HTTP_LOCKED = 423; // 424 Failed Dependency (WebDAV - RFC 2518) public static final int HTTP_FAILED_DEPENDENCY = 424; + public static final int HTTP_TOO_EARLY = 425; /** * 5xx Client Error diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/RemoteFile.java b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/RemoteFile.java index 84a48bcd..8d243d14 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/RemoteFile.java +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/RemoteFile.java @@ -120,7 +120,7 @@ public class RemoteFile implements Parcelable, Serializable { public RemoteFile(final Response davResource, String userId) { this(RemoteFileUtil.Companion.getRemotePathFromUrl(davResource.getHref(), userId)); - final List properties = davResource.getProperties(); + final List properties = RemoteFileUtil.Companion.getProperties(davResource); for (Property property : properties) { if (property instanceof CreationDate) { diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/RemoteFileUtil.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/RemoteFileUtil.kt index 30550e70..66609bd1 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/RemoteFileUtil.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/RemoteFileUtil.kt @@ -24,7 +24,11 @@ package com.owncloud.android.lib.resources.files import android.net.Uri +import at.bitfire.dav4jvm.PropStat +import at.bitfire.dav4jvm.Property +import at.bitfire.dav4jvm.Response import com.owncloud.android.lib.common.OwnCloudClient +import com.owncloud.android.lib.common.http.HttpConstants import okhttp3.HttpUrl class RemoteFileUtil { @@ -45,5 +49,14 @@ class RemoteFileUtil { val pathToOc = absoluteDavPath.split(davFilesPath)[0] return absoluteDavPath.replace(pathToOc + davFilesPath, "") } + + fun getProperties(response: Response): List { + return if (response.isSuccess()) + response.propstat.filter { propStat -> propStat.isSuccessOrPostProcessing() }.map { it.properties }.flatten() + else + emptyList() + } + + private fun PropStat.isSuccessOrPostProcessing() = (status.code / 100 == 2 || status.code == HttpConstants.HTTP_TOO_EARLY) } }