From 59048e8e7a4f06e0ee174dde094e2d16469471f2 Mon Sep 17 00:00:00 2001 From: davigonz Date: Wed, 17 Apr 2019 17:58:04 +0200 Subject: [PATCH] Use new flag to retrieve more information about just updated shares --- .../shares/CreateRemoteShareOperation.kt | 5 -- .../shares/UpdateRemoteShareOperation.kt | 50 +++++++++++-------- 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/CreateRemoteShareOperation.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/CreateRemoteShareOperation.kt index 1decdf89..fecd1388 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/CreateRemoteShareOperation.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/CreateRemoteShareOperation.kt @@ -81,10 +81,6 @@ class CreateRemoteShareOperation( var publicUpload: Boolean = false // Upload permissions for the public link (only folders) - init { - retrieveShareDetails = false // defaults to false for backwards compatibility - } - override fun run(client: OwnCloudClient): RemoteOperationResult { var result: RemoteOperationResult @@ -140,7 +136,6 @@ class CreateRemoteShareOperation( result = parser.parse(postMethod.responseBodyAsString) if (result.isSuccess && retrieveShareDetails) { - // TODO Use executeHttpMethod // retrieve more info - POST only returns the index of the new share val emptyShare = result.data.shares[0] val getInfo = GetRemoteShareOperation( diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/UpdateRemoteShareOperation.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/UpdateRemoteShareOperation.kt index f1d30d70..9ead50cd 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/UpdateRemoteShareOperation.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/UpdateRemoteShareOperation.kt @@ -59,6 +59,15 @@ class UpdateRemoteShareOperation private val remoteId: Long ) : RemoteOperation() { + /** + * Name to update in Share resource. Ignored by servers previous to version 10.0.0 + * + * @param name Name to set to the target share. + * Empty string clears the current name. + * Null results in no update applied to the name. + */ + var name: String? = null + /** * Password to update in Share resource. * @@ -94,14 +103,7 @@ class UpdateRemoteShareOperation */ var publicUpload: Boolean? = null - /** - * Name to update in Share resource. Ignored by servers previous to version 10.0.0 - * - * @param name Name to set to the target share. - * Empty string clears the current name. - * Null results in no update applied to the name. - */ - var name: String? = null + var retrieveShareDetails = false // To retrieve more info about the just updated share override fun run(client: OwnCloudClient): RemoteOperationResult { var result: RemoteOperationResult @@ -111,7 +113,7 @@ class UpdateRemoteShareOperation // Parameters to update if (name != null) { - formBodyBuilder.add(PARAM_NAME, name) + formBodyBuilder.add(PARAM_NAME, name!!) } if (expirationDateInMillis < INITIAL_EXPIRATION_DATE_IN_MILLIS) { @@ -148,21 +150,29 @@ class UpdateRemoteShareOperation putMethod.setRequestBody(formBodyBuilder.build()) putMethod.setRequestHeader(HttpConstants.CONTENT_TYPE_HEADER, HttpConstants.CONTENT_TYPE_URLENCODED_UTF8) - putMethod.addRequestHeader(RemoteOperation.OCS_API_HEADER, RemoteOperation.OCS_API_HEADER_VALUE) + putMethod.addRequestHeader(OCS_API_HEADER, OCS_API_HEADER_VALUE) val status = client.executeHttpMethod(putMethod) - if (isSuccess(status)) { - // Parse xml response - val parser = ShareToRemoteOperationResultParser( - ShareXMLParser() - ) - parser.ownCloudVersion = client.ownCloudVersion - parser.serverBaseUri = client.baseUri - result = parser.parse(putMethod.responseBodyAsString) + if(!isSuccess(status)){ + return RemoteOperationResult(putMethod) + } - } else { - result = RemoteOperationResult(putMethod) + // Parse xml response + val parser = ShareToRemoteOperationResultParser( + ShareXMLParser() + ) + parser.ownCloudVersion = client.ownCloudVersion + parser.serverBaseUri = client.baseUri + result = parser.parse(putMethod.responseBodyAsString) + + if (result.isSuccess && retrieveShareDetails) { + // retrieve more info - PUT only returns the index of the new share + val emptyShare = result.data.shares[0] + val getInfo = GetRemoteShareOperation( + emptyShare.id + ) + result = getInfo.execute(client) } } catch (e: Exception) {