mirror of
https://github.com/owncloud/android-library.git
synced 2025-06-07 16:06:08 +00:00
Fix shares parsing
This commit is contained in:
parent
27b18c33a9
commit
45fb12df0e
@ -70,7 +70,7 @@ class CreateRemoteShareOperation(
|
|||||||
private val shareType: ShareType,
|
private val shareType: ShareType,
|
||||||
private val shareWith: String,
|
private val shareWith: String,
|
||||||
private val permissions: Int
|
private val permissions: Int
|
||||||
) : RemoteOperation<ShareParserResult>() {
|
) : RemoteOperation<ShareResponse>() {
|
||||||
var name = "" // Name to set for the public link
|
var name = "" // Name to set for the public link
|
||||||
|
|
||||||
var password: String = "" // Password to set for the public link
|
var password: String = "" // Password to set for the public link
|
||||||
@ -81,8 +81,8 @@ class CreateRemoteShareOperation(
|
|||||||
|
|
||||||
var retrieveShareDetails = false // To retrieve more info about the just created share
|
var retrieveShareDetails = false // To retrieve more info about the just created share
|
||||||
|
|
||||||
override fun run(client: OwnCloudClient): RemoteOperationResult<ShareParserResult> {
|
override fun run(client: OwnCloudClient): RemoteOperationResult<ShareResponse> {
|
||||||
var result: RemoteOperationResult<ShareParserResult>
|
var result: RemoteOperationResult<ShareResponse>
|
||||||
|
|
||||||
try {
|
try {
|
||||||
val formBodyBuilder = FormBody.Builder()
|
val formBodyBuilder = FormBody.Builder()
|
||||||
@ -142,7 +142,7 @@ class CreateRemoteShareOperation(
|
|||||||
val remoteOperationResult = getShares.execute(client)
|
val remoteOperationResult = getShares.execute(client)
|
||||||
|
|
||||||
result = RemoteOperationResult(remoteOperationResult)
|
result = RemoteOperationResult(remoteOperationResult)
|
||||||
result.data = ShareParserResult(remoteOperationResult.data.toRemoteShare())
|
result.data = remoteOperationResult.data
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -30,7 +30,7 @@ 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.RemoteOperation
|
||||||
import com.owncloud.android.lib.common.operations.RemoteOperationResult
|
import com.owncloud.android.lib.common.operations.RemoteOperationResult
|
||||||
import com.owncloud.android.lib.resources.CommonOcsResponse
|
import com.owncloud.android.lib.resources.CommonOcsResponse
|
||||||
import com.owncloud.android.lib.resources.shares.responses.ShareResponse
|
import com.owncloud.android.lib.resources.shares.responses.ShareItem
|
||||||
import com.squareup.moshi.JsonAdapter
|
import com.squareup.moshi.JsonAdapter
|
||||||
import com.squareup.moshi.Moshi
|
import com.squareup.moshi.Moshi
|
||||||
import com.squareup.moshi.Types
|
import com.squareup.moshi.Types
|
||||||
@ -49,9 +49,14 @@ class GetRemoteShareOperation(private val remoteId: String) : RemoteOperation<Sh
|
|||||||
|
|
||||||
private fun parseResponse(response: String): ShareResponse? {
|
private fun parseResponse(response: String): ShareResponse? {
|
||||||
val moshi = Moshi.Builder().build()
|
val moshi = Moshi.Builder().build()
|
||||||
val type: Type = Types.newParameterizedType(CommonOcsResponse::class.java, ShareResponse::class.java)
|
val listOfShareItemType: Type = Types.newParameterizedType(List::class.java, ShareItem::class.java)
|
||||||
val adapter: JsonAdapter<CommonOcsResponse<ShareResponse>> = moshi.adapter(type)
|
val commonOcsType: Type = Types.newParameterizedType(CommonOcsResponse::class.java, listOfShareItemType)
|
||||||
return adapter.fromJson(response)!!.ocs.data
|
val adapter: JsonAdapter<CommonOcsResponse<List<ShareItem>>> = moshi.adapter(commonOcsType)
|
||||||
|
return adapter.fromJson(response)?.ocs?.data?.let { listOfShareItems ->
|
||||||
|
ShareResponse(listOfShareItems.map { shareItem ->
|
||||||
|
shareItem.toRemoteShare()
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun onResultUnsuccessful(
|
private fun onResultUnsuccessful(
|
||||||
|
@ -59,10 +59,10 @@ class GetRemoteSharesForFileOperation(
|
|||||||
private val remoteFilePath: String,
|
private val remoteFilePath: String,
|
||||||
private val reshares: Boolean,
|
private val reshares: Boolean,
|
||||||
private val subfiles: Boolean
|
private val subfiles: Boolean
|
||||||
) : RemoteOperation<ShareParserResult>() {
|
) : RemoteOperation<ShareResponse>() {
|
||||||
|
|
||||||
override fun run(client: OwnCloudClient): RemoteOperationResult<ShareParserResult> {
|
override fun run(client: OwnCloudClient): RemoteOperationResult<ShareResponse> {
|
||||||
var result: RemoteOperationResult<ShareParserResult>
|
var result: RemoteOperationResult<ShareResponse>
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
@ -48,10 +48,10 @@ import java.net.URL
|
|||||||
*
|
*
|
||||||
* @param remoteShareId Share ID
|
* @param remoteShareId Share ID
|
||||||
*/
|
*/
|
||||||
class RemoveRemoteShareOperation(private val remoteShareId: String) : RemoteOperation<ShareParserResult>() {
|
class RemoveRemoteShareOperation(private val remoteShareId: String) : RemoteOperation<ShareResponse>() {
|
||||||
|
|
||||||
override fun run(client: OwnCloudClient): RemoteOperationResult<ShareParserResult> {
|
override fun run(client: OwnCloudClient): RemoteOperationResult<ShareResponse> {
|
||||||
var result: RemoteOperationResult<ShareParserResult>
|
var result: RemoteOperationResult<ShareResponse>
|
||||||
|
|
||||||
try {
|
try {
|
||||||
val requestUri = client.baseUri
|
val requestUri = client.baseUri
|
||||||
|
@ -25,4 +25,4 @@
|
|||||||
|
|
||||||
package com.owncloud.android.lib.resources.shares
|
package com.owncloud.android.lib.resources.shares
|
||||||
|
|
||||||
class ShareParserResult(val shares: List<RemoteShare>)
|
data class ShareResponse(val shares: List<RemoteShare>)
|
@ -41,12 +41,12 @@ class ShareToRemoteOperationResultParser(private var shareXmlParser: ShareXMLPar
|
|||||||
var ownCloudVersion: OwnCloudVersion? = null
|
var ownCloudVersion: OwnCloudVersion? = null
|
||||||
var serverBaseUri: Uri? = null
|
var serverBaseUri: Uri? = null
|
||||||
|
|
||||||
fun parse(serverResponse: String?): RemoteOperationResult<ShareParserResult> {
|
fun parse(serverResponse: String?): RemoteOperationResult<ShareResponse> {
|
||||||
if (serverResponse.isNullOrEmpty()) {
|
if (serverResponse.isNullOrEmpty()) {
|
||||||
return RemoteOperationResult(RemoteOperationResult.ResultCode.WRONG_SERVER_RESPONSE)
|
return RemoteOperationResult(RemoteOperationResult.ResultCode.WRONG_SERVER_RESPONSE)
|
||||||
}
|
}
|
||||||
|
|
||||||
var result: RemoteOperationResult<ShareParserResult>
|
var result: RemoteOperationResult<ShareResponse>
|
||||||
val resultData: List<RemoteShare>?
|
val resultData: List<RemoteShare>?
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -82,7 +82,7 @@ class ShareToRemoteOperationResultParser(private var shareXmlParser: ShareXMLPar
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (resultData != null) {
|
if (resultData != null) {
|
||||||
result.setData(ShareParserResult(ArrayList(resultData.toMutableList())))
|
result.setData(ShareResponse(ArrayList(resultData.toMutableList())))
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -57,7 +57,7 @@ class UpdateRemoteShareOperation
|
|||||||
*/
|
*/
|
||||||
private val remoteId: String
|
private val remoteId: String
|
||||||
|
|
||||||
) : RemoteOperation<ShareParserResult>() {
|
) : RemoteOperation<ShareResponse>() {
|
||||||
/**
|
/**
|
||||||
* 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,8 +99,8 @@ class UpdateRemoteShareOperation
|
|||||||
|
|
||||||
var retrieveShareDetails = false // To retrieve more info about the just updated share
|
var retrieveShareDetails = false // To retrieve more info about the just updated share
|
||||||
|
|
||||||
override fun run(client: OwnCloudClient): RemoteOperationResult<ShareParserResult> {
|
override fun run(client: OwnCloudClient): RemoteOperationResult<ShareResponse> {
|
||||||
var result: RemoteOperationResult<ShareParserResult>
|
var result: RemoteOperationResult<ShareResponse>
|
||||||
|
|
||||||
try {
|
try {
|
||||||
val formBodyBuilder = FormBody.Builder()
|
val formBodyBuilder = FormBody.Builder()
|
||||||
@ -169,10 +169,7 @@ class UpdateRemoteShareOperation
|
|||||||
val getShares = GetRemoteShareOperation(
|
val getShares = GetRemoteShareOperation(
|
||||||
emptyShare.id
|
emptyShare.id
|
||||||
)
|
)
|
||||||
val remoteOperationResult = getShares.execute(client)
|
result = getShares.execute(client)
|
||||||
|
|
||||||
result = RemoteOperationResult(remoteOperationResult)
|
|
||||||
result.data = ShareParserResult(remoteOperationResult.data.toRemoteShare())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
|
@ -31,30 +31,6 @@ import com.owncloud.android.lib.resources.shares.ShareType
|
|||||||
import com.squareup.moshi.JsonClass
|
import com.squareup.moshi.JsonClass
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
|
|
||||||
@JsonClass(generateAdapter = true)
|
|
||||||
data class ShareResponse(
|
|
||||||
val shares: List<ShareItem>
|
|
||||||
) {
|
|
||||||
fun toRemoteShare() = this.shares.map { shareItem ->
|
|
||||||
RemoteShare(
|
|
||||||
id = shareItem.id ?: "0",
|
|
||||||
shareWith = shareItem.shareWith.orEmpty(),
|
|
||||||
path = shareItem.path.orEmpty(),
|
|
||||||
token = shareItem.token.orEmpty(),
|
|
||||||
sharedWithDisplayName = shareItem.sharedWithDisplayName.orEmpty(),
|
|
||||||
sharedWithAdditionalInfo = shareItem.sharedWithAdditionalInfo.orEmpty(),
|
|
||||||
name = shareItem.name.orEmpty(),
|
|
||||||
shareLink = shareItem.shareLink.orEmpty(),
|
|
||||||
shareType = ShareType.values().firstOrNull { it.value == shareItem.shareType } ?: ShareType.UNKNOWN,
|
|
||||||
permissions = shareItem.permissions ?: DEFAULT_PERMISSION,
|
|
||||||
sharedDate = shareItem.sharedDate ?: INIT_SHARED_DATE,
|
|
||||||
expirationDate = shareItem.expirationDate ?: INIT_EXPIRATION_DATE_IN_MILLIS,
|
|
||||||
isFolder = shareItem.path?.endsWith(File.separator) ?: false
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@JsonClass(generateAdapter = true)
|
@JsonClass(generateAdapter = true)
|
||||||
data class ShareItem(
|
data class ShareItem(
|
||||||
val id: String? = null,
|
val id: String? = null,
|
||||||
@ -69,4 +45,20 @@ data class ShareItem(
|
|||||||
val permissions: Int? = null,
|
val permissions: Int? = null,
|
||||||
val sharedDate: Long? = null,
|
val sharedDate: Long? = null,
|
||||||
val expirationDate: Long? = null,
|
val expirationDate: Long? = null,
|
||||||
)
|
) {
|
||||||
|
fun toRemoteShare() = RemoteShare(
|
||||||
|
id = id ?: "0",
|
||||||
|
shareWith = shareWith.orEmpty(),
|
||||||
|
path = path.orEmpty(),
|
||||||
|
token = token.orEmpty(),
|
||||||
|
sharedWithDisplayName = sharedWithDisplayName.orEmpty(),
|
||||||
|
sharedWithAdditionalInfo = sharedWithAdditionalInfo.orEmpty(),
|
||||||
|
name = name.orEmpty(),
|
||||||
|
shareLink = shareLink.orEmpty(),
|
||||||
|
shareType = ShareType.values().firstOrNull { it.value == shareType } ?: ShareType.UNKNOWN,
|
||||||
|
permissions = permissions ?: DEFAULT_PERMISSION,
|
||||||
|
sharedDate = sharedDate ?: INIT_SHARED_DATE,
|
||||||
|
expirationDate = expirationDate ?: INIT_EXPIRATION_DATE_IN_MILLIS,
|
||||||
|
isFolder = path?.endsWith(File.separator) ?: false
|
||||||
|
)
|
||||||
|
}
|
@ -22,7 +22,7 @@ package com.owncloud.android.lib.resources.shares.services
|
|||||||
|
|
||||||
import com.owncloud.android.lib.common.operations.RemoteOperationResult
|
import com.owncloud.android.lib.common.operations.RemoteOperationResult
|
||||||
import com.owncloud.android.lib.resources.Service
|
import com.owncloud.android.lib.resources.Service
|
||||||
import com.owncloud.android.lib.resources.shares.ShareParserResult
|
import com.owncloud.android.lib.resources.shares.ShareResponse
|
||||||
import com.owncloud.android.lib.resources.shares.ShareType
|
import com.owncloud.android.lib.resources.shares.ShareType
|
||||||
|
|
||||||
interface ShareService : Service {
|
interface ShareService : Service {
|
||||||
@ -30,7 +30,7 @@ interface ShareService : Service {
|
|||||||
remoteFilePath: String,
|
remoteFilePath: String,
|
||||||
reshares: Boolean,
|
reshares: Boolean,
|
||||||
subfiles: Boolean
|
subfiles: Boolean
|
||||||
): RemoteOperationResult<ShareParserResult>
|
): RemoteOperationResult<ShareResponse>
|
||||||
|
|
||||||
fun insertShare(
|
fun insertShare(
|
||||||
remoteFilePath: String,
|
remoteFilePath: String,
|
||||||
@ -41,7 +41,7 @@ interface ShareService : Service {
|
|||||||
password: String,
|
password: String,
|
||||||
expirationDate: Long,
|
expirationDate: Long,
|
||||||
publicUpload: Boolean
|
publicUpload: Boolean
|
||||||
): RemoteOperationResult<ShareParserResult>
|
): RemoteOperationResult<ShareResponse>
|
||||||
|
|
||||||
fun updateShare(
|
fun updateShare(
|
||||||
remoteId: String,
|
remoteId: String,
|
||||||
@ -50,7 +50,7 @@ interface ShareService : Service {
|
|||||||
expirationDate: Long,
|
expirationDate: Long,
|
||||||
permissions: Int,
|
permissions: Int,
|
||||||
publicUpload: Boolean
|
publicUpload: Boolean
|
||||||
): RemoteOperationResult<ShareParserResult>
|
): RemoteOperationResult<ShareResponse>
|
||||||
|
|
||||||
fun deleteShare(remoteId: String): RemoteOperationResult<ShareParserResult>
|
fun deleteShare(remoteId: String): RemoteOperationResult<ShareResponse>
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult
|
|||||||
import com.owncloud.android.lib.resources.shares.CreateRemoteShareOperation
|
import com.owncloud.android.lib.resources.shares.CreateRemoteShareOperation
|
||||||
import com.owncloud.android.lib.resources.shares.GetRemoteSharesForFileOperation
|
import com.owncloud.android.lib.resources.shares.GetRemoteSharesForFileOperation
|
||||||
import com.owncloud.android.lib.resources.shares.RemoveRemoteShareOperation
|
import com.owncloud.android.lib.resources.shares.RemoveRemoteShareOperation
|
||||||
import com.owncloud.android.lib.resources.shares.ShareParserResult
|
import com.owncloud.android.lib.resources.shares.ShareResponse
|
||||||
import com.owncloud.android.lib.resources.shares.ShareType
|
import com.owncloud.android.lib.resources.shares.ShareType
|
||||||
import com.owncloud.android.lib.resources.shares.UpdateRemoteShareOperation
|
import com.owncloud.android.lib.resources.shares.UpdateRemoteShareOperation
|
||||||
import com.owncloud.android.lib.resources.shares.services.ShareService
|
import com.owncloud.android.lib.resources.shares.services.ShareService
|
||||||
@ -36,7 +36,7 @@ class OCShareService(override val client: OwnCloudClient) :
|
|||||||
remoteFilePath: String,
|
remoteFilePath: String,
|
||||||
reshares: Boolean,
|
reshares: Boolean,
|
||||||
subfiles: Boolean
|
subfiles: Boolean
|
||||||
): RemoteOperationResult<ShareParserResult> = GetRemoteSharesForFileOperation(
|
): RemoteOperationResult<ShareResponse> = GetRemoteSharesForFileOperation(
|
||||||
remoteFilePath,
|
remoteFilePath,
|
||||||
reshares,
|
reshares,
|
||||||
subfiles
|
subfiles
|
||||||
@ -51,7 +51,7 @@ class OCShareService(override val client: OwnCloudClient) :
|
|||||||
password: String,
|
password: String,
|
||||||
expirationDate: Long,
|
expirationDate: Long,
|
||||||
publicUpload: Boolean
|
publicUpload: Boolean
|
||||||
): RemoteOperationResult<ShareParserResult> =
|
): RemoteOperationResult<ShareResponse> =
|
||||||
CreateRemoteShareOperation(
|
CreateRemoteShareOperation(
|
||||||
remoteFilePath,
|
remoteFilePath,
|
||||||
shareType,
|
shareType,
|
||||||
@ -72,7 +72,7 @@ class OCShareService(override val client: OwnCloudClient) :
|
|||||||
expirationDate: Long,
|
expirationDate: Long,
|
||||||
permissions: Int,
|
permissions: Int,
|
||||||
publicUpload: Boolean
|
publicUpload: Boolean
|
||||||
): RemoteOperationResult<ShareParserResult> =
|
): RemoteOperationResult<ShareResponse> =
|
||||||
UpdateRemoteShareOperation(
|
UpdateRemoteShareOperation(
|
||||||
remoteId
|
remoteId
|
||||||
).apply {
|
).apply {
|
||||||
@ -84,7 +84,7 @@ class OCShareService(override val client: OwnCloudClient) :
|
|||||||
this.retrieveShareDetails = true
|
this.retrieveShareDetails = true
|
||||||
}.execute(client)
|
}.execute(client)
|
||||||
|
|
||||||
override fun deleteShare(remoteId: String): RemoteOperationResult<ShareParserResult> =
|
override fun deleteShare(remoteId: String): RemoteOperationResult<ShareResponse> =
|
||||||
RemoveRemoteShareOperation(
|
RemoveRemoteShareOperation(
|
||||||
remoteId
|
remoteId
|
||||||
).execute(client)
|
).execute(client)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user