From 16d6a2d8410694e593d455a2077eb5aa975535ef Mon Sep 17 00:00:00 2001 From: Manuel Plazas Palacio Date: Wed, 27 Sep 2023 17:31:07 +0200 Subject: [PATCH] Managing the deeplink --- .../files/GetFileMetaInfoRemoteOperation.kt | 34 +++++++++++++++++++ .../resources/files/services/FileService.kt | 2 ++ .../services/implementation/OCFileService.kt | 4 +++ 3 files changed, 40 insertions(+) create mode 100644 owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/GetFileMetaInfoRemoteOperation.kt diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/GetFileMetaInfoRemoteOperation.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/GetFileMetaInfoRemoteOperation.kt new file mode 100644 index 00000000..7b5e31ed --- /dev/null +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/GetFileMetaInfoRemoteOperation.kt @@ -0,0 +1,34 @@ +package com.owncloud.android.lib.resources.files + +import com.owncloud.android.lib.common.OwnCloudClient +import com.owncloud.android.lib.common.http.HttpConstants +import com.owncloud.android.lib.common.http.methods.webdav.DavUtils +import com.owncloud.android.lib.common.http.methods.webdav.DavUtils.allPropSet +import com.owncloud.android.lib.common.http.methods.webdav.PropfindMethod +import com.owncloud.android.lib.common.operations.RemoteOperation +import com.owncloud.android.lib.common.operations.RemoteOperationResult +import timber.log.Timber +import java.net.URL + +class GetFileMetaInfoRemoteOperation(val fileId: String) : RemoteOperation() { + private val stringUrl = "${client.baseUri}$META_PATH$fileId" + + override fun run(client: OwnCloudClient): RemoteOperationResult { + return try { + val propFindMethod = PropfindMethod(URL(stringUrl), 0, allPropSet) + + val status = client.executeHttpMethod(propFindMethod) + if (isSuccess(status)) RemoteOperationResult(RemoteOperationResult.ResultCode.OK) + else RemoteOperationResult(propFindMethod) + } catch (e: Exception) { + Timber.e(e, "Could not get actuall (or redirected) base URL from base url (/).") + RemoteOperationResult(e) + } + } + + private fun isSuccess(status: Int) = status == HttpConstants.HTTP_OK || status == HttpConstants.HTTP_MULTI_STATUS + + companion object { + private const val META_PATH = "/remote.php/dav/meta/" + } +} \ No newline at end of file diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/services/FileService.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/services/FileService.kt index 43f5c57c..b92f9a16 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/services/FileService.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/services/FileService.kt @@ -83,4 +83,6 @@ interface FileService : Service { isFolder: Boolean, spaceWebDavUrl: String? = null, ): RemoteOperationResult + + fun fileMetaInfo(fileId: String): RemoteOperationResult } diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/services/implementation/OCFileService.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/services/implementation/OCFileService.kt index 4d110858..1dbd2931 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/services/implementation/OCFileService.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/services/implementation/OCFileService.kt @@ -29,6 +29,7 @@ import com.owncloud.android.lib.resources.files.CheckPathExistenceRemoteOperatio import com.owncloud.android.lib.resources.files.CopyRemoteFileOperation import com.owncloud.android.lib.resources.files.CreateRemoteFolderOperation import com.owncloud.android.lib.resources.files.DownloadRemoteFileOperation +import com.owncloud.android.lib.resources.files.GetFileMetaInfoRemoteOperation import com.owncloud.android.lib.resources.files.MoveRemoteFileOperation import com.owncloud.android.lib.resources.files.ReadRemoteFileOperation import com.owncloud.android.lib.resources.files.ReadRemoteFolderOperation @@ -140,4 +141,7 @@ class OCFileService(override val client: OwnCloudClient) : FileService { isFolder = isFolder, spaceWebDavUrl = spaceWebDavUrl, ).execute(client) + + override fun fileMetaInfo(fileId: String): RemoteOperationResult = GetFileMetaInfoRemoteOperation(fileId).execute(client) + }