Skip to content
This repository has been archived by the owner on Mar 19, 2024. It is now read-only.

Commit

Permalink
2nd code review changes
Browse files Browse the repository at this point in the history
Apply pending change
  • Loading branch information
davigonz committed Mar 6, 2019
1 parent 48aa180 commit 30bfa4e
Show file tree
Hide file tree
Showing 9 changed files with 219 additions and 273 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import com.owncloud.android.lib.common.http.methods.nonwebdav.PostMethod
import com.owncloud.android.lib.common.operations.RemoteOperation
import com.owncloud.android.lib.common.operations.RemoteOperationResult
import com.owncloud.android.lib.common.utils.Log_OC
import com.owncloud.android.lib.resources.shares.RemoteShare.Companion.INIT_EXPIRATION_DATE_IN_MILLIS
import okhttp3.FormBody
import java.net.URL
import java.text.SimpleDateFormat
Expand Down Expand Up @@ -75,7 +76,7 @@ class CreateRemoteShareOperation
var password: String?, // Password to set for the public link
var permissions: Int // Access permissions for the file bound to the share
) : RemoteOperation<ShareParserResult>() {
var getShareDetails: Boolean = false
var getShareDetails: Boolean = false // To retrieve more info about the just created share

/**
* Name to set for the public link
Expand All @@ -85,7 +86,7 @@ class CreateRemoteShareOperation
/**
* Expiration date to set for the public link
*/
var expirationDateInMillis: Long = INITIAL_EXPIRATION_DATE_IN_MILLIS
var expirationDateInMillis: Long = INIT_EXPIRATION_DATE_IN_MILLIS

init {
getShareDetails = false // defaults to false for backwards compatibility
Expand All @@ -104,7 +105,7 @@ class CreateRemoteShareOperation
formBodyBuilder.add(PARAM_NAME, name)
}

if (expirationDateInMillis > INITIAL_EXPIRATION_DATE_IN_MILLIS) {
if (expirationDateInMillis > INIT_EXPIRATION_DATE_IN_MILLIS) {
val dateFormat = SimpleDateFormat(FORMAT_EXPIRATION_DATE, Locale.getDefault())
val expirationDate = Calendar.getInstance()
expirationDate.timeInMillis = expirationDateInMillis
Expand All @@ -116,7 +117,7 @@ class CreateRemoteShareOperation
formBodyBuilder.add(PARAM_PUBLIC_UPLOAD, publicUpload.toString())
}
if (!password.isNullOrEmpty()) {
formBodyBuilder.add(PARAM_PASSWORD, password!!)
formBodyBuilder.add(PARAM_PASSWORD, password)
}
if (RemoteShare.DEFAULT_PERMISSION != permissions) {
formBodyBuilder.add(PARAM_PERMISSIONS, Integer.toString(permissions))
Expand Down Expand Up @@ -168,24 +169,19 @@ class CreateRemoteShareOperation
return result
}

private fun isSuccess(status: Int): Boolean {
return status == HttpConstants.HTTP_OK
}
private fun isSuccess(status: Int): Boolean = status == HttpConstants.HTTP_OK

companion object {

private val TAG = CreateRemoteShareOperation::class.java.simpleName

private val PARAM_NAME = "name"
private val PARAM_PASSWORD = "password"
private val PARAM_EXPIRATION_DATE = "expireDate"
private val PARAM_PUBLIC_UPLOAD = "publicUpload"
private val PARAM_PATH = "path"
private val PARAM_SHARE_TYPE = "shareType"
private val PARAM_SHARE_WITH = "shareWith"
private val PARAM_PERMISSIONS = "permissions"
private val FORMAT_EXPIRATION_DATE = "yyyy-MM-dd"

const val INITIAL_EXPIRATION_DATE_IN_MILLIS : Long = 0
private const val PARAM_NAME = "name"
private const val PARAM_PASSWORD = "password"
private const val PARAM_EXPIRATION_DATE = "expireDate"
private const val PARAM_PUBLIC_UPLOAD = "publicUpload"
private const val PARAM_PATH = "path"
private const val PARAM_SHARE_TYPE = "shareType"
private const val PARAM_SHARE_WITH = "shareWith"
private const val PARAM_PERMISSIONS = "permissions"
private const val FORMAT_EXPIRATION_DATE = "yyyy-MM-dd"
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
/* ownCloud Android Library is available under MIT license
* @author masensio
* @author David A. Velasco
* @author David González Verdugo
* Copyright (C) 2019 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.shares

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.utils.Log_OC
import java.net.URL

/**
* Provide a list shares for a specific file.
* The input is the full path of the desired file.
* The output is a list of everyone who has the file shared with them.
*
* @author masensio
* @author David A. Velasco
* @author David González Verdugo
*/

/**
* Constructor
*
* @param remoteFilePath Path to file or folder
* @param reshares If set to false (default), only shares owned by the current user are
* returned.
* If set to true, shares owned by any user from the given file are returned.
* @param subfiles If set to false (default), lists only the folder being shared
* If set to true, all shared files within the folder are returned.
*/
class GetRemoteSharesForFileOperation(
private val remoteFilePath: String,
private val reshares: Boolean,
private val subfiles: Boolean
) : RemoteOperation<ShareParserResult>() {

override fun run(client: OwnCloudClient): RemoteOperationResult<ShareParserResult> {
var result: RemoteOperationResult<ShareParserResult>

try {

val requestUri = client.baseUri
val uriBuilder = requestUri.buildUpon()
uriBuilder.appendEncodedPath(ShareUtils.SHARING_API_PATH)
uriBuilder.appendQueryParameter(PARAM_PATH, remoteFilePath)
uriBuilder.appendQueryParameter(PARAM_RESHARES, reshares.toString())
uriBuilder.appendQueryParameter(PARAM_SUBFILES, subfiles.toString())

val getMethod = GetMethod(URL(uriBuilder.build().toString()))

getMethod.addRequestHeader(RemoteOperation.OCS_API_HEADER, RemoteOperation.OCS_API_HEADER_VALUE)

val status = client.executeHttpMethod(getMethod)

if (isSuccess(status)) {
// Parse xml response and obtain the list of shares
val parser = ShareToRemoteOperationResultParser(
ShareXMLParser()
)
parser.ownCloudVersion = client.ownCloudVersion
parser.serverBaseUri = client.baseUri
result = parser.parse(getMethod.responseBodyAsString)

if (result.isSuccess) {
Log_OC.d(TAG, "Got " + result.data.shares.size + " shares")
}
} else {
result = RemoteOperationResult(getMethod)
}
} catch (e: Exception) {
result = RemoteOperationResult(e)
Log_OC.e(TAG, "Exception while getting shares", e)
}

return result
}

private fun isSuccess(status: Int): Boolean = status == HttpConstants.HTTP_OK

companion object {

private val TAG = GetRemoteSharesForFileOperation::class.java.simpleName

private const val PARAM_PATH = "path"
private const val PARAM_RESHARES = "reshares"
private const val PARAM_SUBFILES = "subfiles"
}
}
Loading

0 comments on commit 30bfa4e

Please sign in to comment.