1
0
mirror of https://github.com/owncloud/android-library.git synced 2025-06-07 16:06:08 +00:00

Modify remote operations to create or update shares

This commit is contained in:
davigonz 2019-04-17 10:24:50 +02:00
parent 688a978b1e
commit 4849be5daa
3 changed files with 19 additions and 26 deletions

View File

@ -65,8 +65,7 @@ import java.util.Locale
* To obtain combinations, add the desired values together. * To obtain combinations, add the desired values together.
* For instance, for Re-Share, delete, read, update, add 16+8+2+1 = 27. * For instance, for Re-Share, delete, read, update, add 16+8+2+1 = 27.
*/ */
class CreateRemoteShareOperation class CreateRemoteShareOperation(
(
private val remoteFilePath: String, private val remoteFilePath: String,
private val shareType: ShareType, private val shareType: ShareType,
private val shareWith: String, private val shareWith: String,
@ -107,10 +106,10 @@ class CreateRemoteShareOperation
formBodyBuilder.add(PARAM_EXPIRATION_DATE, formattedExpirationDate) formBodyBuilder.add(PARAM_EXPIRATION_DATE, formattedExpirationDate)
} }
if (publicUpload == true) { if (publicUpload) {
formBodyBuilder.add(PARAM_PUBLIC_UPLOAD, publicUpload.toString()) formBodyBuilder.add(PARAM_PUBLIC_UPLOAD, publicUpload.toString())
} }
if (!password.isNullOrEmpty()) { if (password.isNotEmpty()) {
formBodyBuilder.add(PARAM_PASSWORD, password) formBodyBuilder.add(PARAM_PASSWORD, password)
} }
if (RemoteShare.DEFAULT_PERMISSION != permissions) { if (RemoteShare.DEFAULT_PERMISSION != permissions) {
@ -126,7 +125,7 @@ class CreateRemoteShareOperation
postMethod.setRequestBody(formBodyBuilder.build()) postMethod.setRequestBody(formBodyBuilder.build())
postMethod.setRequestHeader(HttpConstants.CONTENT_TYPE_HEADER, HttpConstants.CONTENT_TYPE_URLENCODED_UTF8) postMethod.setRequestHeader(HttpConstants.CONTENT_TYPE_HEADER, HttpConstants.CONTENT_TYPE_URLENCODED_UTF8)
postMethod.addRequestHeader(RemoteOperation.OCS_API_HEADER, RemoteOperation.OCS_API_HEADER_VALUE) postMethod.addRequestHeader(OCS_API_HEADER, OCS_API_HEADER_VALUE)
val status = client.executeHttpMethod(postMethod) val status = client.executeHttpMethod(postMethod)
@ -141,7 +140,6 @@ class CreateRemoteShareOperation
result = parser.parse(postMethod.responseBodyAsString) result = parser.parse(postMethod.responseBodyAsString)
if (result.isSuccess && retrieveShareDetails) { if (result.isSuccess && retrieveShareDetails) {
// TODO Use executeHttpMethod // TODO Use executeHttpMethod
// retrieve more info - POST only returns the index of the new share // retrieve more info - POST only returns the index of the new share
val emptyShare = result.data.shares[0] val emptyShare = result.data.shares[0]

View File

@ -49,7 +49,7 @@ class RemoteShare : Parcelable, Serializable {
var fileSource: Long = 0 var fileSource: Long = 0
var itemSource: Long = 0 var itemSource: Long = 0
var shareType: ShareType? = null var shareType: ShareType? = null
var permissions: Int = INIT_PERMISSION var permissions: Int = DEFAULT_PERMISSION
var sharedDate: Long = INIT_SHARED_DATE var sharedDate: Long = INIT_SHARED_DATE
var expirationDate: Long = INIT_EXPIRATION_DATE_IN_MILLIS var expirationDate: Long = INIT_EXPIRATION_DATE_IN_MILLIS
var isFolder: Boolean = false var isFolder: Boolean = false
@ -156,7 +156,6 @@ class RemoteShare : Parcelable, Serializable {
private val TAG = RemoteShare::class.java.simpleName private val TAG = RemoteShare::class.java.simpleName
const val INIT_PERMISSION = 0
const val DEFAULT_PERMISSION = -1 const val DEFAULT_PERMISSION = -1
const val READ_PERMISSION_FLAG = 1 const val READ_PERMISSION_FLAG = 1
const val UPDATE_PERMISSION_FLAG = 2 const val UPDATE_PERMISSION_FLAG = 2

View File

@ -31,7 +31,7 @@ import com.owncloud.android.lib.common.http.methods.nonwebdav.PutMethod
import com.owncloud.android.lib.common.operations.RemoteOperation import com.owncloud.android.lib.common.operations.RemoteOperation
import com.owncloud.android.lib.common.operations.RemoteOperationResult import com.owncloud.android.lib.common.operations.RemoteOperationResult
import com.owncloud.android.lib.common.utils.Log_OC import com.owncloud.android.lib.common.utils.Log_OC
import com.owncloud.android.lib.resources.shares.RemoteShare.Companion.INIT_PERMISSION import com.owncloud.android.lib.resources.shares.RemoteShare.Companion.DEFAULT_PERMISSION
import okhttp3.FormBody import okhttp3.FormBody
import java.net.URL import java.net.URL
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
@ -51,11 +51,14 @@ import java.util.Locale
class UpdateRemoteShareOperation class UpdateRemoteShareOperation
/** /**
* Constructor. No update is initialized by default, need to be applied with setters below. * Constructor. No update is initialized by default, need to be applied with setters below.
* */
(
/**
* @param remoteId Identifier of the share to update. * @param remoteId Identifier of the share to update.
*/ */
(private val remoteId: Long) : RemoteOperation<ShareParserResult>() { private val remoteId: Long
) : RemoteOperation<ShareParserResult>() {
/** /**
* Password to update in Share resource. * Password to update in Share resource.
* *
@ -81,7 +84,7 @@ class UpdateRemoteShareOperation
* @param permissions Permissions to set to the target share. * @param permissions Permissions to set to the target share.
* Values <= 0 result in no update applied to the permissions. * Values <= 0 result in no update applied to the permissions.
*/ */
var permissions: Int = INIT_PERMISSION var permissions: Int = DEFAULT_PERMISSION
/** /**
* Enable upload permissions to update in Share resource. * Enable upload permissions to update in Share resource.
@ -90,6 +93,7 @@ class UpdateRemoteShareOperation
* Null results in no update applied to the upload permission. * Null results in no update applied to the upload permission.
*/ */
var publicUpload: Boolean? = null var publicUpload: Boolean? = null
/** /**
* Name to update in Share resource. Ignored by servers previous to version 10.0.0 * Name to update in Share resource. Ignored by servers previous to version 10.0.0
* *
@ -99,13 +103,6 @@ class UpdateRemoteShareOperation
*/ */
var name: String? = null var name: String? = null
init {
password = null // no update
expirationDateInMillis = INITIAL_EXPIRATION_DATE_IN_MILLIS // no update
publicUpload = null
permissions = RemoteShare.DEFAULT_PERMISSION
}
override fun run(client: OwnCloudClient): RemoteOperationResult<ShareParserResult> { override fun run(client: OwnCloudClient): RemoteOperationResult<ShareParserResult> {
var result: RemoteOperationResult<ShareParserResult> var result: RemoteOperationResult<ShareParserResult>
@ -114,7 +111,7 @@ class UpdateRemoteShareOperation
// Parameters to update // Parameters to update
if (name != null) { if (name != null) {
formBodyBuilder.add(PARAM_NAME, name!!) formBodyBuilder.add(PARAM_NAME, name)
} }
if (expirationDateInMillis < INITIAL_EXPIRATION_DATE_IN_MILLIS) { if (expirationDateInMillis < INITIAL_EXPIRATION_DATE_IN_MILLIS) {
@ -136,7 +133,7 @@ class UpdateRemoteShareOperation
// IMPORTANT: permissions parameter needs to be updated after mPublicUpload parameter, // IMPORTANT: permissions parameter needs to be updated after mPublicUpload parameter,
// otherwise they would be set always as 1 (READ) in the server when mPublicUpload was updated // otherwise they would be set always as 1 (READ) in the server when mPublicUpload was updated
if (permissions > INIT_PERMISSION) { if (permissions > DEFAULT_PERMISSION) {
// set permissions // set permissions
formBodyBuilder.add(PARAM_PERMISSIONS, permissions.toString()) formBodyBuilder.add(PARAM_PERMISSIONS, permissions.toString())
} }
@ -179,7 +176,6 @@ class UpdateRemoteShareOperation
private fun isSuccess(status: Int): Boolean = status == HttpConstants.HTTP_OK private fun isSuccess(status: Int): Boolean = status == HttpConstants.HTTP_OK
companion object { companion object {
private val TAG = GetRemoteShareOperation::class.java.simpleName private val TAG = GetRemoteShareOperation::class.java.simpleName
private const val PARAM_NAME = "name" private const val PARAM_NAME = "name"