mirror of
				https://github.com/owncloud/android-library.git
				synced 2025-10-31 10:27:45 +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