mirror of
				https://github.com/owncloud/android-library.git
				synced 2025-10-30 18:07:38 +00:00 
			
		
		
		
	Migrate ReadRemoteFileOperation to kotlin. Second step to keep git history
This commit is contained in:
		
							parent
							
								
									c69c2144be
								
							
						
					
					
						commit
						01c4f52104
					
				| @ -53,7 +53,7 @@ class PropfindMethod( | ||||
|             depth = depth, | ||||
|             reqProp = propertiesToRequest, | ||||
|             listOfHeaders = super.getRequestHeadersAsHashMap(), | ||||
|             callback = { response: Response, hrefRelation: HrefRelation? -> | ||||
|             callback = { response: Response, hrefRelation: HrefRelation -> | ||||
|                 when (hrefRelation) { | ||||
|                     HrefRelation.MEMBER -> members.add(response) | ||||
|                     HrefRelation.SELF -> this.root = response | ||||
|  | ||||
| @ -23,21 +23,20 @@ | ||||
|  */ | ||||
| package com.owncloud.android.lib.resources.files; | ||||
| 
 | ||||
| import com.owncloud.android.lib.common.OwnCloudClient; | ||||
| import com.owncloud.android.lib.common.accounts.AccountUtils; | ||||
| import com.owncloud.android.lib.common.http.HttpConstants; | ||||
| import com.owncloud.android.lib.common.http.methods.webdav.DavUtils; | ||||
| import com.owncloud.android.lib.common.http.methods.webdav.PropfindMethod; | ||||
| import com.owncloud.android.lib.common.network.WebdavUtils; | ||||
| import com.owncloud.android.lib.common.operations.RemoteOperation; | ||||
| import com.owncloud.android.lib.common.operations.RemoteOperationResult; | ||||
| import timber.log.Timber; | ||||
| 
 | ||||
| import java.net.URL; | ||||
| import java.util.concurrent.TimeUnit; | ||||
| 
 | ||||
| import static com.owncloud.android.lib.common.http.methods.webdav.DavConstants.DEPTH_0; | ||||
| import static com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode.OK; | ||||
| import com.owncloud.android.lib.common.OwnCloudClient | ||||
| import com.owncloud.android.lib.common.accounts.AccountUtils | ||||
| import com.owncloud.android.lib.common.http.HttpConstants.HTTP_MULTI_STATUS | ||||
| import com.owncloud.android.lib.common.http.HttpConstants.HTTP_OK | ||||
| import com.owncloud.android.lib.common.http.methods.webdav.DavConstants.DEPTH_0 | ||||
| import com.owncloud.android.lib.common.http.methods.webdav.DavUtils | ||||
| import com.owncloud.android.lib.common.http.methods.webdav.PropfindMethod | ||||
| import com.owncloud.android.lib.common.network.WebdavUtils | ||||
| import com.owncloud.android.lib.common.operations.RemoteOperation | ||||
| import com.owncloud.android.lib.common.operations.RemoteOperationResult | ||||
| import com.owncloud.android.lib.common.utils.isOneOf | ||||
| import timber.log.Timber | ||||
| import java.net.URL | ||||
| import java.util.concurrent.TimeUnit | ||||
| 
 | ||||
| /** | ||||
|  * Remote operation performing the read a file from the ownCloud server. | ||||
| @ -47,21 +46,7 @@ import static com.owncloud.android.lib.common.operations.RemoteOperationResult.R | ||||
|  * @author David González Verdugo | ||||
|  */ | ||||
| 
 | ||||
| public class ReadRemoteFileOperation extends RemoteOperation<RemoteFile> { | ||||
| 
 | ||||
|     private static final int SYNC_READ_TIMEOUT = 40000; | ||||
|     private static final int SYNC_CONNECTION_TIMEOUT = 5000; | ||||
| 
 | ||||
|     private String mRemotePath; | ||||
| 
 | ||||
|     /** | ||||
|      * Constructor | ||||
|      * | ||||
|      * @param remotePath Remote path of the file. | ||||
|      */ | ||||
|     public ReadRemoteFileOperation(String remotePath) { | ||||
|         mRemotePath = remotePath; | ||||
|     } | ||||
| class ReadRemoteFileOperation(val remotePath: String) : RemoteOperation<RemoteFile>() { | ||||
| 
 | ||||
|     /** | ||||
|      * Performs the read operation. | ||||
| @ -69,41 +54,44 @@ public class ReadRemoteFileOperation extends RemoteOperation<RemoteFile> { | ||||
|      * @param client Client object to communicate with the remote ownCloud server. | ||||
|      */ | ||||
|     @Override | ||||
|     protected RemoteOperationResult<RemoteFile> run(OwnCloudClient client) { | ||||
|         PropfindMethod propfind; | ||||
|         RemoteOperationResult<RemoteFile> result; | ||||
| 
 | ||||
|         /// take the duty of check the server for the current state of the file there | ||||
|     override fun run(client: OwnCloudClient): RemoteOperationResult<RemoteFile> { | ||||
|         try { | ||||
|             // remote request | ||||
|             propfind = new PropfindMethod( | ||||
|                     new URL(client.getUserFilesWebDavUri() + WebdavUtils.encodePath(mRemotePath)), | ||||
|                     DEPTH_0, | ||||
|                     DavUtils.getAllPropset()); | ||||
| 
 | ||||
|             propfind.setReadTimeout(SYNC_READ_TIMEOUT, TimeUnit.SECONDS); | ||||
|             propfind.setConnectionTimeout(SYNC_CONNECTION_TIMEOUT, TimeUnit.SECONDS); | ||||
|             final int status = client.executeHttpMethod(propfind); | ||||
| 
 | ||||
|             if (status == HttpConstants.HTTP_MULTI_STATUS | ||||
|                     || status == HttpConstants.HTTP_OK) { | ||||
| 
 | ||||
|                 final RemoteFile file = RemoteFile.Companion.getRemoteFileFromDav(propfind.getRoot(), | ||||
|                         AccountUtils.getUserId(mAccount, mContext), mAccount.name); | ||||
| 
 | ||||
|                 result = new RemoteOperationResult<>(OK); | ||||
|                 result.setData(file); | ||||
| 
 | ||||
|             } else { | ||||
|                 result = new RemoteOperationResult<>(propfind); | ||||
|                 client.exhaustResponse(propfind.getResponseBodyAsStream()); | ||||
|             val propFind = PropfindMethod( | ||||
|                 url = URL("${client.userFilesWebDavUri}${WebdavUtils.encodePath(remotePath)}"), | ||||
|                 depth = DEPTH_0, | ||||
|                 propertiesToRequest = DavUtils.allPropset | ||||
|             ).apply { | ||||
|                 setReadTimeout(SYNC_READ_TIMEOUT, TimeUnit.SECONDS) | ||||
|                 setConnectionTimeout(SYNC_CONNECTION_TIMEOUT, TimeUnit.SECONDS) | ||||
|             } | ||||
| 
 | ||||
|         } catch (Exception e) { | ||||
|             result = new RemoteOperationResult<>(e); | ||||
|             Timber.e(e, "Synchronizing  file %s", mRemotePath); | ||||
|         } | ||||
|             val status = client.executeHttpMethod(propFind) | ||||
|             Timber.i("Read remote file $remotePath with status ${propFind.statusCode}") | ||||
| 
 | ||||
|         return result; | ||||
|             return if (isSuccess(status)) { | ||||
|                 // TODO: Remove that !! | ||||
|                 val remoteFile = RemoteFile.getRemoteFileFromDav( | ||||
|                     propFind.root!!, | ||||
|                     AccountUtils.getUserId(mAccount, mContext), mAccount.name | ||||
|                 ) | ||||
| 
 | ||||
|                 RemoteOperationResult<RemoteFile>(RemoteOperationResult.ResultCode.OK).apply { | ||||
|                     data = remoteFile | ||||
|                 } | ||||
|             } else { | ||||
|                 RemoteOperationResult<RemoteFile>(propFind).also { | ||||
|                     client.exhaustResponse(propFind.getResponseBodyAsStream()) | ||||
|                 } | ||||
|             } | ||||
|         } catch (exception: Exception) { | ||||
|             return RemoteOperationResult(exception) | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|     private fun isSuccess(status: Int) = status.isOneOf(HTTP_MULTI_STATUS, HTTP_OK) | ||||
| 
 | ||||
|     companion object { | ||||
|         private const val SYNC_READ_TIMEOUT = 40_000L | ||||
|         private const val SYNC_CONNECTION_TIMEOUT = 5_000L | ||||
|     } | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user