From 173b12eeca2416dbdef5da239c012a84d1b85df5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Abel=20Garc=C3=ADa=20de=20Prada?= Date: Fri, 24 Mar 2023 12:52:11 +0100 Subject: [PATCH 1/4] Retrieve the list of available apps to open in web --- .../GetRemoteAppRegistryOperation.kt | 82 +++++++++++++++++++ .../responses/AppRegistryResponse.kt | 56 +++++++++++++ .../services/AppRegistryService.kt | 31 +++++++ .../services/OCAppRegistryService.kt | 33 ++++++++ 4 files changed, 202 insertions(+) create mode 100644 owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/GetRemoteAppRegistryOperation.kt create mode 100644 owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/responses/AppRegistryResponse.kt create mode 100644 owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/AppRegistryService.kt create mode 100644 owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/OCAppRegistryService.kt diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/GetRemoteAppRegistryOperation.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/GetRemoteAppRegistryOperation.kt new file mode 100644 index 00000000..60367ff0 --- /dev/null +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/GetRemoteAppRegistryOperation.kt @@ -0,0 +1,82 @@ +/* ownCloud Android Library is available under MIT license + * @author Abel García de Prada + * + * Copyright (C) 2023 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.resources.appregistry + +import com.owncloud.android.lib.common.OwnCloudClient +import com.owncloud.android.lib.common.http.HttpConstants +import com.owncloud.android.lib.common.http.methods.nonwebdav.GetMethod +import com.owncloud.android.lib.common.operations.RemoteOperation +import com.owncloud.android.lib.common.operations.RemoteOperationResult +import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode.OK +import com.owncloud.android.lib.resources.appregistry.responses.AppRegistryResponse +import com.squareup.moshi.JsonAdapter +import com.squareup.moshi.Moshi +import timber.log.Timber +import java.net.URL + +class GetRemoteAppRegistryOperation : RemoteOperation() { + + override fun run(client: OwnCloudClient): RemoteOperationResult { + var result: RemoteOperationResult + + try { + val uriBuilder = client.baseUri.buildUpon().apply { + appendEncodedPath(APP_REGISTRY_ENDPOINT) + } + val getMethod = GetMethod(URL(uriBuilder.build().toString())) + val status = client.executeHttpMethod(getMethod) + + val response = getMethod.getResponseBodyAsString() + + if (status == HttpConstants.HTTP_OK) { + Timber.d("Successful response $response") + + // Parse the response + val moshi: Moshi = Moshi.Builder().build() + val adapter: JsonAdapter = moshi.adapter(AppRegistryResponse::class.java) + val appRegistryResponse: AppRegistryResponse = response?.let { adapter.fromJson(it) } ?: AppRegistryResponse(value = emptyList()) + + result = RemoteOperationResult(OK) + result.data = appRegistryResponse + + Timber.d("Get AppRegistry completed and parsed to ${result.data}") + } else { + result = RemoteOperationResult(getMethod) + Timber.e("Failed response while getting app registry from the server status code: $status; response message: $response") + } + + } catch (e: Exception) { + result = RemoteOperationResult(e) + Timber.e(e, "Exception while getting app registry") + } + + return result + } + + companion object { + private const val APP_REGISTRY_ENDPOINT = "app/list" + } +} diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/responses/AppRegistryResponse.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/responses/AppRegistryResponse.kt new file mode 100644 index 00000000..f3f247d9 --- /dev/null +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/responses/AppRegistryResponse.kt @@ -0,0 +1,56 @@ +/* ownCloud Android Library is available under MIT license + * @author Abel García de Prada + * + * Copyright (C) 2023 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.resources.appregistry.responses + +import com.squareup.moshi.Json +import com.squareup.moshi.JsonClass + +@JsonClass(generateAdapter = true) +data class AppRegistryResponse( + @Json(name = "mime-types") + val value: List +) + +@JsonClass(generateAdapter = true) +data class AppRegistryMimeTypeResponse( + @Json(name = "mime_type") val mimeType: String, + val ext: String? = null, + @Json(name = "app_providers") + val appProviders: List, + val name: String? = null, + val icon: String? = null, + val description: String? = null, + @Json(name = "allow_creation") + val allowCreation: Boolean? = null, + @Json(name = "default_application") + val defaultApplication: String? = null +) + +@JsonClass(generateAdapter = true) +data class AppRegistryProviderResponse( + val name: String, + val icon: String, +) diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/AppRegistryService.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/AppRegistryService.kt new file mode 100644 index 00000000..3950faab --- /dev/null +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/AppRegistryService.kt @@ -0,0 +1,31 @@ +/* ownCloud Android Library is available under MIT license + * Copyright (C) 2023 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.resources.appregistry.services + +import com.owncloud.android.lib.common.operations.RemoteOperationResult +import com.owncloud.android.lib.resources.Service +import com.owncloud.android.lib.resources.appregistry.responses.AppRegistryResponse + +interface AppRegistryService : Service { + fun getAppRegistry(): RemoteOperationResult +} diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/OCAppRegistryService.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/OCAppRegistryService.kt new file mode 100644 index 00000000..e0d93a33 --- /dev/null +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/OCAppRegistryService.kt @@ -0,0 +1,33 @@ +/* ownCloud Android Library is available under MIT license + * Copyright (C) 2023 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.resources.appregistry.services + +import com.owncloud.android.lib.common.OwnCloudClient +import com.owncloud.android.lib.common.operations.RemoteOperationResult +import com.owncloud.android.lib.resources.appregistry.responses.AppRegistryResponse +import com.owncloud.android.lib.resources.appregistry.GetRemoteAppRegistryOperation + +class OCAppRegistryService(override val client: OwnCloudClient) : AppRegistryService { + override fun getAppRegistry(): RemoteOperationResult = + GetRemoteAppRegistryOperation().execute(client) +} From 2ac5cf0657a833757e01c1049c8bee88ad6f4191 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Abel=20Garc=C3=ADa=20de=20Prada?= Date: Fri, 24 Mar 2023 14:56:14 +0100 Subject: [PATCH 2/4] Move open in web operations to their proper location --- .../GetUrlToOpenInWebRemoteOperation.kt | 4 ++-- .../resources/appregistry/services/AppRegistryService.kt | 2 ++ .../resources/appregistry/services/OCAppRegistryService.kt | 6 +++++- .../android/lib/resources/files/services/FileService.kt | 2 -- .../files/services/implementation/OCFileService.kt | 5 ----- 5 files changed, 9 insertions(+), 10 deletions(-) rename owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/{files => appregistry}/GetUrlToOpenInWebRemoteOperation.kt (95%) diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/GetUrlToOpenInWebRemoteOperation.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/GetUrlToOpenInWebRemoteOperation.kt similarity index 95% rename from owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/GetUrlToOpenInWebRemoteOperation.kt rename to owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/GetUrlToOpenInWebRemoteOperation.kt index b36cb760..9a9c1c5c 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/GetUrlToOpenInWebRemoteOperation.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/GetUrlToOpenInWebRemoteOperation.kt @@ -21,7 +21,7 @@ * THE SOFTWARE. * */ -package com.owncloud.android.lib.resources.files +package com.owncloud.android.lib.resources.appregistry import com.owncloud.android.lib.common.OwnCloudClient import com.owncloud.android.lib.common.http.HttpConstants @@ -30,7 +30,7 @@ import com.owncloud.android.lib.common.network.WebdavUtils import com.owncloud.android.lib.common.operations.RemoteOperation import com.owncloud.android.lib.common.operations.RemoteOperationResult import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode -import com.owncloud.android.lib.resources.files.GetUrlToOpenInWebRemoteOperation.OpenInWebParams.Companion.PARAM_FILE_ID +import com.owncloud.android.lib.resources.appregistry.GetUrlToOpenInWebRemoteOperation.OpenInWebParams.Companion.PARAM_FILE_ID import com.squareup.moshi.JsonAdapter import com.squareup.moshi.JsonClass import com.squareup.moshi.Moshi diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/AppRegistryService.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/AppRegistryService.kt index 3950faab..23cd9e70 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/AppRegistryService.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/AppRegistryService.kt @@ -28,4 +28,6 @@ import com.owncloud.android.lib.resources.appregistry.responses.AppRegistryRespo interface AppRegistryService : Service { fun getAppRegistry(): RemoteOperationResult + + fun getUrlToOpenInWeb(openWebEndpoint: String, fileId: String): RemoteOperationResult } diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/OCAppRegistryService.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/OCAppRegistryService.kt index e0d93a33..22209219 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/OCAppRegistryService.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/OCAppRegistryService.kt @@ -24,10 +24,14 @@ package com.owncloud.android.lib.resources.appregistry.services import com.owncloud.android.lib.common.OwnCloudClient import com.owncloud.android.lib.common.operations.RemoteOperationResult -import com.owncloud.android.lib.resources.appregistry.responses.AppRegistryResponse import com.owncloud.android.lib.resources.appregistry.GetRemoteAppRegistryOperation +import com.owncloud.android.lib.resources.appregistry.responses.AppRegistryResponse +import com.owncloud.android.lib.resources.appregistry.GetUrlToOpenInWebRemoteOperation class OCAppRegistryService(override val client: OwnCloudClient) : AppRegistryService { override fun getAppRegistry(): RemoteOperationResult = GetRemoteAppRegistryOperation().execute(client) + + override fun getUrlToOpenInWeb(openWebEndpoint: String, fileId: String): RemoteOperationResult = + GetUrlToOpenInWebRemoteOperation(openWithWebEndpoint = openWebEndpoint, fileId = fileId).execute(client) } 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 1421648b..b524dc3f 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 @@ -28,8 +28,6 @@ import com.owncloud.android.lib.resources.Service import com.owncloud.android.lib.resources.files.RemoteFile interface FileService : Service { - fun getUrlToOpenInWeb(openWebEndpoint: String, fileId: String): RemoteOperationResult - fun checkPathExistence( path: String, isUserLogged: Boolean, 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 8ec44d46..7b86a4fa 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,7 +29,6 @@ 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.GetUrlToOpenInWebRemoteOperation import com.owncloud.android.lib.resources.files.MoveRemoteFileOperation import com.owncloud.android.lib.resources.files.ReadRemoteFileOperation import com.owncloud.android.lib.resources.files.ReadRemoteFolderOperation @@ -39,7 +38,6 @@ import com.owncloud.android.lib.resources.files.RenameRemoteFileOperation import com.owncloud.android.lib.resources.files.services.FileService class OCFileService(override val client: OwnCloudClient) : FileService { - override fun checkPathExistence( path: String, isUserLogged: Boolean, @@ -51,9 +49,6 @@ class OCFileService(override val client: OwnCloudClient) : FileService { spaceWebDavUrl = spaceWebDavUrl, ).execute(client) - override fun getUrlToOpenInWeb(openWebEndpoint: String, fileId: String): RemoteOperationResult = - GetUrlToOpenInWebRemoteOperation(openWithWebEndpoint = openWebEndpoint, fileId = fileId).execute(client) - override fun copyFile( sourceRemotePath: String, targetRemotePath: String, From f35daacdf18529a7ad62c42df11285bb68b1c043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Abel=20Garc=C3=ADa=20de=20Prada?= Date: Mon, 27 Mar 2023 08:39:29 +0200 Subject: [PATCH 3/4] Pleasure the lint --- .../lib/resources/appregistry/services/OCAppRegistryService.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/OCAppRegistryService.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/OCAppRegistryService.kt index 22209219..595f7895 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/OCAppRegistryService.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/OCAppRegistryService.kt @@ -25,8 +25,8 @@ package com.owncloud.android.lib.resources.appregistry.services import com.owncloud.android.lib.common.OwnCloudClient import com.owncloud.android.lib.common.operations.RemoteOperationResult import com.owncloud.android.lib.resources.appregistry.GetRemoteAppRegistryOperation -import com.owncloud.android.lib.resources.appregistry.responses.AppRegistryResponse import com.owncloud.android.lib.resources.appregistry.GetUrlToOpenInWebRemoteOperation +import com.owncloud.android.lib.resources.appregistry.responses.AppRegistryResponse class OCAppRegistryService(override val client: OwnCloudClient) : AppRegistryService { override fun getAppRegistry(): RemoteOperationResult = From 393ec6e07e12783ee6f5f5f8b7d2d75b7a9ba0ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Abel=20Garc=C3=ADa=20de=20Prada?= Date: Tue, 28 Mar 2023 10:32:24 +0200 Subject: [PATCH 4/4] Open file in web with a specific app --- .../GetUrlToOpenInWebRemoteOperation.kt | 18 +++++++++++++----- .../appregistry/services/AppRegistryService.kt | 6 +++++- .../services/OCAppRegistryService.kt | 8 ++++++-- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/GetUrlToOpenInWebRemoteOperation.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/GetUrlToOpenInWebRemoteOperation.kt index 9a9c1c5c..422db268 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/GetUrlToOpenInWebRemoteOperation.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/GetUrlToOpenInWebRemoteOperation.kt @@ -30,7 +30,6 @@ import com.owncloud.android.lib.common.network.WebdavUtils import com.owncloud.android.lib.common.operations.RemoteOperation import com.owncloud.android.lib.common.operations.RemoteOperationResult import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode -import com.owncloud.android.lib.resources.appregistry.GetUrlToOpenInWebRemoteOperation.OpenInWebParams.Companion.PARAM_FILE_ID import com.squareup.moshi.JsonAdapter import com.squareup.moshi.JsonClass import com.squareup.moshi.Moshi @@ -43,14 +42,16 @@ import java.util.concurrent.TimeUnit class GetUrlToOpenInWebRemoteOperation( val openWithWebEndpoint: String, val fileId: String, + val appName: String, ) : RemoteOperation() { override fun run(client: OwnCloudClient): RemoteOperationResult { return try { - val openInWebRequestBody = OpenInWebParams(fileId).toRequestBody() + val openInWebRequestBody = OpenInWebParams(fileId, appName).toRequestBody() - val stringUrl = client.baseUri.toString() + WebdavUtils.encodePath(openWithWebEndpoint) + "?$PARAM_FILE_ID=$fileId" + val stringUrl = + client.baseUri.toString() + WebdavUtils.encodePath(openWithWebEndpoint) val postMethod = PostMethod(URL(stringUrl), openInWebRequestBody).apply { setReadTimeout(TIMEOUT, TimeUnit.MILLISECONDS) @@ -77,12 +78,19 @@ class GetUrlToOpenInWebRemoteOperation( private fun isSuccess(status: Int) = status == HttpConstants.HTTP_OK || status == HttpConstants.HTTP_MULTI_STATUS - data class OpenInWebParams(val fileId: String) { + data class OpenInWebParams( + val fileId: String, + val appName: String, + ) { fun toRequestBody(): RequestBody = - FormBody.Builder().build() + FormBody.Builder() + .add(PARAM_FILE_ID, fileId) + .add(PARAM_APP_NAME, appName) + .build() companion object { const val PARAM_FILE_ID = "file_id" + const val PARAM_APP_NAME = "app_name" } } diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/AppRegistryService.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/AppRegistryService.kt index 23cd9e70..4b94f1f7 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/AppRegistryService.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/AppRegistryService.kt @@ -29,5 +29,9 @@ import com.owncloud.android.lib.resources.appregistry.responses.AppRegistryRespo interface AppRegistryService : Service { fun getAppRegistry(): RemoteOperationResult - fun getUrlToOpenInWeb(openWebEndpoint: String, fileId: String): RemoteOperationResult + fun getUrlToOpenInWeb( + openWebEndpoint: String, + fileId: String, + appName: String, + ): RemoteOperationResult } diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/OCAppRegistryService.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/OCAppRegistryService.kt index 595f7895..f80fe821 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/OCAppRegistryService.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/appregistry/services/OCAppRegistryService.kt @@ -32,6 +32,10 @@ class OCAppRegistryService(override val client: OwnCloudClient) : AppRegistrySer override fun getAppRegistry(): RemoteOperationResult = GetRemoteAppRegistryOperation().execute(client) - override fun getUrlToOpenInWeb(openWebEndpoint: String, fileId: String): RemoteOperationResult = - GetUrlToOpenInWebRemoteOperation(openWithWebEndpoint = openWebEndpoint, fileId = fileId).execute(client) + override fun getUrlToOpenInWeb(openWebEndpoint: String, fileId: String, appName: String): RemoteOperationResult = + GetUrlToOpenInWebRemoteOperation( + openWithWebEndpoint = openWebEndpoint, + fileId = fileId, + appName = appName + ).execute(client) }