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

Commit 45fb12d

Browse files
committed
Fix shares parsing
1 parent 27b18c3 commit 45fb12d

File tree

10 files changed

+54
-60
lines changed

10 files changed

+54
-60
lines changed

owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/CreateRemoteShareOperation.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ class CreateRemoteShareOperation(
7070
private val shareType: ShareType,
7171
private val shareWith: String,
7272
private val permissions: Int
73-
) : RemoteOperation<ShareParserResult>() {
73+
) : RemoteOperation<ShareResponse>() {
7474
var name = "" // Name to set for the public link
7575

7676
var password: String = "" // Password to set for the public link
@@ -81,8 +81,8 @@ class CreateRemoteShareOperation(
8181

8282
var retrieveShareDetails = false // To retrieve more info about the just created share
8383

84-
override fun run(client: OwnCloudClient): RemoteOperationResult<ShareParserResult> {
85-
var result: RemoteOperationResult<ShareParserResult>
84+
override fun run(client: OwnCloudClient): RemoteOperationResult<ShareResponse> {
85+
var result: RemoteOperationResult<ShareResponse>
8686

8787
try {
8888
val formBodyBuilder = FormBody.Builder()
@@ -142,7 +142,7 @@ class CreateRemoteShareOperation(
142142
val remoteOperationResult = getShares.execute(client)
143143

144144
result = RemoteOperationResult(remoteOperationResult)
145-
result.data = ShareParserResult(remoteOperationResult.data.toRemoteShare())
145+
result.data = remoteOperationResult.data
146146
}
147147

148148
} else {

owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/GetRemoteShareOperation.kt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import com.owncloud.android.lib.common.http.methods.nonwebdav.GetMethod
3030
import com.owncloud.android.lib.common.operations.RemoteOperation
3131
import com.owncloud.android.lib.common.operations.RemoteOperationResult
3232
import com.owncloud.android.lib.resources.CommonOcsResponse
33-
import com.owncloud.android.lib.resources.shares.responses.ShareResponse
33+
import com.owncloud.android.lib.resources.shares.responses.ShareItem
3434
import com.squareup.moshi.JsonAdapter
3535
import com.squareup.moshi.Moshi
3636
import com.squareup.moshi.Types
@@ -49,9 +49,14 @@ class GetRemoteShareOperation(private val remoteId: String) : RemoteOperation<Sh
4949

5050
private fun parseResponse(response: String): ShareResponse? {
5151
val moshi = Moshi.Builder().build()
52-
val type: Type = Types.newParameterizedType(CommonOcsResponse::class.java, ShareResponse::class.java)
53-
val adapter: JsonAdapter<CommonOcsResponse<ShareResponse>> = moshi.adapter(type)
54-
return adapter.fromJson(response)!!.ocs.data
52+
val listOfShareItemType: Type = Types.newParameterizedType(List::class.java, ShareItem::class.java)
53+
val commonOcsType: Type = Types.newParameterizedType(CommonOcsResponse::class.java, listOfShareItemType)
54+
val adapter: JsonAdapter<CommonOcsResponse<List<ShareItem>>> = moshi.adapter(commonOcsType)
55+
return adapter.fromJson(response)?.ocs?.data?.let { listOfShareItems ->
56+
ShareResponse(listOfShareItems.map { shareItem ->
57+
shareItem.toRemoteShare()
58+
})
59+
}
5560
}
5661

5762
private fun onResultUnsuccessful(

owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/GetRemoteSharesForFileOperation.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,10 @@ class GetRemoteSharesForFileOperation(
5959
private val remoteFilePath: String,
6060
private val reshares: Boolean,
6161
private val subfiles: Boolean
62-
) : RemoteOperation<ShareParserResult>() {
62+
) : RemoteOperation<ShareResponse>() {
6363

64-
override fun run(client: OwnCloudClient): RemoteOperationResult<ShareParserResult> {
65-
var result: RemoteOperationResult<ShareParserResult>
64+
override fun run(client: OwnCloudClient): RemoteOperationResult<ShareResponse> {
65+
var result: RemoteOperationResult<ShareResponse>
6666

6767
try {
6868

owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/RemoveRemoteShareOperation.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@ import java.net.URL
4848
*
4949
* @param remoteShareId Share ID
5050
*/
51-
class RemoveRemoteShareOperation(private val remoteShareId: String) : RemoteOperation<ShareParserResult>() {
51+
class RemoveRemoteShareOperation(private val remoteShareId: String) : RemoteOperation<ShareResponse>() {
5252

53-
override fun run(client: OwnCloudClient): RemoteOperationResult<ShareParserResult> {
54-
var result: RemoteOperationResult<ShareParserResult>
53+
override fun run(client: OwnCloudClient): RemoteOperationResult<ShareResponse> {
54+
var result: RemoteOperationResult<ShareResponse>
5555

5656
try {
5757
val requestUri = client.baseUri

owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/ShareParserResult.kt renamed to owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/ShareResponse.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,4 @@
2525

2626
package com.owncloud.android.lib.resources.shares
2727

28-
class ShareParserResult(val shares: List<RemoteShare>)
28+
data class ShareResponse(val shares: List<RemoteShare>)

owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/ShareToRemoteOperationResultParser.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,12 @@ class ShareToRemoteOperationResultParser(private var shareXmlParser: ShareXMLPar
4141
var ownCloudVersion: OwnCloudVersion? = null
4242
var serverBaseUri: Uri? = null
4343

44-
fun parse(serverResponse: String?): RemoteOperationResult<ShareParserResult> {
44+
fun parse(serverResponse: String?): RemoteOperationResult<ShareResponse> {
4545
if (serverResponse.isNullOrEmpty()) {
4646
return RemoteOperationResult(RemoteOperationResult.ResultCode.WRONG_SERVER_RESPONSE)
4747
}
4848

49-
var result: RemoteOperationResult<ShareParserResult>
49+
var result: RemoteOperationResult<ShareResponse>
5050
val resultData: List<RemoteShare>?
5151

5252
try {
@@ -82,7 +82,7 @@ class ShareToRemoteOperationResultParser(private var shareXmlParser: ShareXMLPar
8282
}
8383

8484
if (resultData != null) {
85-
result.setData(ShareParserResult(ArrayList(resultData.toMutableList())))
85+
result.setData(ShareResponse(ArrayList(resultData.toMutableList())))
8686
}
8787

8888
} else {

owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/UpdateRemoteShareOperation.kt

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class UpdateRemoteShareOperation
5757
*/
5858
private val remoteId: String
5959

60-
) : RemoteOperation<ShareParserResult>() {
60+
) : RemoteOperation<ShareResponse>() {
6161
/**
6262
* Name to update in Share resource. Ignored by servers previous to version 10.0.0
6363
*
@@ -99,8 +99,8 @@ class UpdateRemoteShareOperation
9999

100100
var retrieveShareDetails = false // To retrieve more info about the just updated share
101101

102-
override fun run(client: OwnCloudClient): RemoteOperationResult<ShareParserResult> {
103-
var result: RemoteOperationResult<ShareParserResult>
102+
override fun run(client: OwnCloudClient): RemoteOperationResult<ShareResponse> {
103+
var result: RemoteOperationResult<ShareResponse>
104104

105105
try {
106106
val formBodyBuilder = FormBody.Builder()
@@ -169,10 +169,7 @@ class UpdateRemoteShareOperation
169169
val getShares = GetRemoteShareOperation(
170170
emptyShare.id
171171
)
172-
val remoteOperationResult = getShares.execute(client)
173-
174-
result = RemoteOperationResult(remoteOperationResult)
175-
result.data = ShareParserResult(remoteOperationResult.data.toRemoteShare())
172+
result = getShares.execute(client)
176173
}
177174

178175
} catch (e: Exception) {
Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -31,30 +31,6 @@ import com.owncloud.android.lib.resources.shares.ShareType
3131
import com.squareup.moshi.JsonClass
3232
import java.io.File
3333

34-
35-
@JsonClass(generateAdapter = true)
36-
data class ShareResponse(
37-
val shares: List<ShareItem>
38-
) {
39-
fun toRemoteShare() = this.shares.map { shareItem ->
40-
RemoteShare(
41-
id = shareItem.id ?: "0",
42-
shareWith = shareItem.shareWith.orEmpty(),
43-
path = shareItem.path.orEmpty(),
44-
token = shareItem.token.orEmpty(),
45-
sharedWithDisplayName = shareItem.sharedWithDisplayName.orEmpty(),
46-
sharedWithAdditionalInfo = shareItem.sharedWithAdditionalInfo.orEmpty(),
47-
name = shareItem.name.orEmpty(),
48-
shareLink = shareItem.shareLink.orEmpty(),
49-
shareType = ShareType.values().firstOrNull { it.value == shareItem.shareType } ?: ShareType.UNKNOWN,
50-
permissions = shareItem.permissions ?: DEFAULT_PERMISSION,
51-
sharedDate = shareItem.sharedDate ?: INIT_SHARED_DATE,
52-
expirationDate = shareItem.expirationDate ?: INIT_EXPIRATION_DATE_IN_MILLIS,
53-
isFolder = shareItem.path?.endsWith(File.separator) ?: false
54-
)
55-
}
56-
}
57-
5834
@JsonClass(generateAdapter = true)
5935
data class ShareItem(
6036
val id: String? = null,
@@ -69,4 +45,20 @@ data class ShareItem(
6945
val permissions: Int? = null,
7046
val sharedDate: Long? = null,
7147
val expirationDate: Long? = null,
72-
)
48+
) {
49+
fun toRemoteShare() = RemoteShare(
50+
id = id ?: "0",
51+
shareWith = shareWith.orEmpty(),
52+
path = path.orEmpty(),
53+
token = token.orEmpty(),
54+
sharedWithDisplayName = sharedWithDisplayName.orEmpty(),
55+
sharedWithAdditionalInfo = sharedWithAdditionalInfo.orEmpty(),
56+
name = name.orEmpty(),
57+
shareLink = shareLink.orEmpty(),
58+
shareType = ShareType.values().firstOrNull { it.value == shareType } ?: ShareType.UNKNOWN,
59+
permissions = permissions ?: DEFAULT_PERMISSION,
60+
sharedDate = sharedDate ?: INIT_SHARED_DATE,
61+
expirationDate = expirationDate ?: INIT_EXPIRATION_DATE_IN_MILLIS,
62+
isFolder = path?.endsWith(File.separator) ?: false
63+
)
64+
}

owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/services/ShareService.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@ package com.owncloud.android.lib.resources.shares.services
2222

2323
import com.owncloud.android.lib.common.operations.RemoteOperationResult
2424
import com.owncloud.android.lib.resources.Service
25-
import com.owncloud.android.lib.resources.shares.ShareParserResult
25+
import com.owncloud.android.lib.resources.shares.ShareResponse
2626
import com.owncloud.android.lib.resources.shares.ShareType
2727

2828
interface ShareService : Service {
2929
fun getShares(
3030
remoteFilePath: String,
3131
reshares: Boolean,
3232
subfiles: Boolean
33-
): RemoteOperationResult<ShareParserResult>
33+
): RemoteOperationResult<ShareResponse>
3434

3535
fun insertShare(
3636
remoteFilePath: String,
@@ -41,7 +41,7 @@ interface ShareService : Service {
4141
password: String,
4242
expirationDate: Long,
4343
publicUpload: Boolean
44-
): RemoteOperationResult<ShareParserResult>
44+
): RemoteOperationResult<ShareResponse>
4545

4646
fun updateShare(
4747
remoteId: String,
@@ -50,7 +50,7 @@ interface ShareService : Service {
5050
expirationDate: Long,
5151
permissions: Int,
5252
publicUpload: Boolean
53-
): RemoteOperationResult<ShareParserResult>
53+
): RemoteOperationResult<ShareResponse>
5454

55-
fun deleteShare(remoteId: String): RemoteOperationResult<ShareParserResult>
55+
fun deleteShare(remoteId: String): RemoteOperationResult<ShareResponse>
5656
}

owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/services/implementation/OCShareService.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult
2525
import com.owncloud.android.lib.resources.shares.CreateRemoteShareOperation
2626
import com.owncloud.android.lib.resources.shares.GetRemoteSharesForFileOperation
2727
import com.owncloud.android.lib.resources.shares.RemoveRemoteShareOperation
28-
import com.owncloud.android.lib.resources.shares.ShareParserResult
28+
import com.owncloud.android.lib.resources.shares.ShareResponse
2929
import com.owncloud.android.lib.resources.shares.ShareType
3030
import com.owncloud.android.lib.resources.shares.UpdateRemoteShareOperation
3131
import com.owncloud.android.lib.resources.shares.services.ShareService
@@ -36,7 +36,7 @@ class OCShareService(override val client: OwnCloudClient) :
3636
remoteFilePath: String,
3737
reshares: Boolean,
3838
subfiles: Boolean
39-
): RemoteOperationResult<ShareParserResult> = GetRemoteSharesForFileOperation(
39+
): RemoteOperationResult<ShareResponse> = GetRemoteSharesForFileOperation(
4040
remoteFilePath,
4141
reshares,
4242
subfiles
@@ -51,7 +51,7 @@ class OCShareService(override val client: OwnCloudClient) :
5151
password: String,
5252
expirationDate: Long,
5353
publicUpload: Boolean
54-
): RemoteOperationResult<ShareParserResult> =
54+
): RemoteOperationResult<ShareResponse> =
5555
CreateRemoteShareOperation(
5656
remoteFilePath,
5757
shareType,
@@ -72,7 +72,7 @@ class OCShareService(override val client: OwnCloudClient) :
7272
expirationDate: Long,
7373
permissions: Int,
7474
publicUpload: Boolean
75-
): RemoteOperationResult<ShareParserResult> =
75+
): RemoteOperationResult<ShareResponse> =
7676
UpdateRemoteShareOperation(
7777
remoteId
7878
).apply {
@@ -84,7 +84,7 @@ class OCShareService(override val client: OwnCloudClient) :
8484
this.retrieveShareDetails = true
8585
}.execute(client)
8686

87-
override fun deleteShare(remoteId: String): RemoteOperationResult<ShareParserResult> =
87+
override fun deleteShare(remoteId: String): RemoteOperationResult<ShareResponse> =
8888
RemoveRemoteShareOperation(
8989
remoteId
9090
).execute(client)

0 commit comments

Comments
 (0)