mirror of
				https://github.com/owncloud/android-library.git
				synced 2025-10-31 10:27:45 +00:00 
			
		
		
		
	Move RequestBody to constructor to avoid npe
This commit is contained in:
		
							parent
							
								
									f89cfd91a9
								
							
						
					
					
						commit
						31d3bfbde9
					
				| @ -7,7 +7,6 @@ import okhttp3.HttpUrl | ||||
| import okhttp3.HttpUrl.Companion.toHttpUrlOrNull | ||||
| import okhttp3.OkHttpClient | ||||
| import okhttp3.Request | ||||
| import okhttp3.RequestBody | ||||
| import okhttp3.Response | ||||
| import java.io.InputStream | ||||
| import java.net.MalformedURLException | ||||
| @ -18,7 +17,6 @@ abstract class HttpBaseMethod constructor(url: URL) { | ||||
|     var okHttpClient: OkHttpClient | ||||
|     var httpUrl: HttpUrl = url.toHttpUrlOrNull() ?: throw MalformedURLException() | ||||
|     var request: Request | ||||
|     var requestBody: RequestBody? = null | ||||
|     abstract var response: Response | ||||
| 
 | ||||
|     var call: Call? = null | ||||
| @ -45,17 +43,13 @@ abstract class HttpBaseMethod constructor(url: URL) { | ||||
|      *** Requests *** | ||||
|      ****************/ | ||||
| 
 | ||||
|     // Headers | ||||
|     val requestHeaders: Headers | ||||
|         get() = request.headers | ||||
| 
 | ||||
|     fun getRequestHeader(name: String): String? { | ||||
|         return request.header(name) | ||||
|     } | ||||
| 
 | ||||
|     fun getRequestHeadersAsHashMap(): HashMap<String, String?> { | ||||
|         val headers: HashMap<String, String?> = HashMap() | ||||
|         val superHeaders: Set<String> = requestHeaders.names() | ||||
|         val superHeaders: Set<String> = request.headers.names() | ||||
|         superHeaders.forEach { | ||||
|             headers[it] = getRequestHeader(it) | ||||
|         } | ||||
|  | ||||
| @ -32,10 +32,12 @@ import java.net.URL | ||||
|  * | ||||
|  * @author David González Verdugo | ||||
|  */ | ||||
| class PostMethod(url: URL, private val postRequestBody: RequestBody) : HttpMethod(url) { | ||||
| class PostMethod( | ||||
|     url: URL, | ||||
|     private val postRequestBody: RequestBody | ||||
| ) : HttpMethod(url) { | ||||
|     @Throws(IOException::class) | ||||
|     override fun onExecute(): Int { | ||||
|         requestBody = postRequestBody | ||||
|         request = request.newBuilder() | ||||
|             .post(postRequestBody) | ||||
|             .build() | ||||
|  | ||||
| @ -38,7 +38,6 @@ class PutMethod( | ||||
| ) : HttpMethod(url) { | ||||
|     @Throws(IOException::class) | ||||
|     override fun onExecute(): Int { | ||||
|         requestBody = putRequestBody | ||||
|         request = request.newBuilder() | ||||
|             .put(putRequestBody) | ||||
|             .build() | ||||
|  | ||||
| @ -25,6 +25,7 @@ package com.owncloud.android.lib.common.http.methods.webdav | ||||
| 
 | ||||
| import at.bitfire.dav4jvm.exception.HttpException | ||||
| import com.owncloud.android.lib.common.http.HttpConstants | ||||
| import okhttp3.RequestBody | ||||
| import java.io.IOException | ||||
| import java.net.URL | ||||
| 
 | ||||
| @ -34,12 +35,13 @@ import java.net.URL | ||||
|  * @author David González Verdugo | ||||
|  */ | ||||
| class PutMethod( | ||||
|     url: URL | ||||
|     url: URL, | ||||
|     private val putRequestBody: RequestBody | ||||
| ) : DavMethod(url) { | ||||
|     @Throws(IOException::class, HttpException::class) | ||||
|     public override fun onExecute(): Int { | ||||
|         davResource.put( | ||||
|             requestBody!!, | ||||
|             putRequestBody, | ||||
|             super.getRequestHeader(HttpConstants.IF_MATCH_HEADER), | ||||
|             getRequestHeadersAsHashMap() | ||||
|         ) { callBackResponse -> | ||||
|  | ||||
| @ -84,10 +84,6 @@ public class UploadRemoteFileOperation extends RemoteOperation { | ||||
|         RemoteOperationResult result; | ||||
| 
 | ||||
|         try { | ||||
|             mPutMethod = new PutMethod( | ||||
|                     new URL(client.getUserFilesWebDavUri() + WebdavUtils.encodePath(mRemotePath))); | ||||
| 
 | ||||
|             mPutMethod.setRetryOnConnectionFailure(false); | ||||
| 
 | ||||
|             if (mCancellationRequested.get()) { | ||||
|                 // the operation was cancelled before getting it's turn to be executed in the queue of uploads | ||||
| @ -125,6 +121,11 @@ public class UploadRemoteFileOperation extends RemoteOperation { | ||||
|             mFileRequestBody.addDatatransferProgressListeners(mDataTransferListeners); | ||||
|         } | ||||
| 
 | ||||
|         mPutMethod = new PutMethod( | ||||
|                 new URL(client.getUserFilesWebDavUri() + WebdavUtils.encodePath(mRemotePath)), mFileRequestBody); | ||||
| 
 | ||||
|         mPutMethod.setRetryOnConnectionFailure(false); | ||||
| 
 | ||||
|         if (mRequiredEtag != null && mRequiredEtag.length() > 0) { | ||||
|             mPutMethod.addRequestHeader(HttpConstants.IF_MATCH_HEADER, mRequiredEtag); | ||||
|         } | ||||
| @ -132,8 +133,6 @@ public class UploadRemoteFileOperation extends RemoteOperation { | ||||
|         mPutMethod.addRequestHeader(HttpConstants.OC_TOTAL_LENGTH_HEADER, String.valueOf(fileToUpload.length())); | ||||
|         mPutMethod.addRequestHeader(HttpConstants.OC_X_OC_MTIME_HEADER, mFileLastModifTimestamp); | ||||
| 
 | ||||
|         mPutMethod.setRequestBody(mFileRequestBody); | ||||
| 
 | ||||
|         int status = client.executeHttpMethod(mPutMethod); | ||||
| 
 | ||||
|         if (isSuccess(status)) { | ||||
|  | ||||
| @ -86,11 +86,6 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation | ||||
|         long chunkCount = (long) Math.ceil((double) totalLength / CHUNK_SIZE); | ||||
| 
 | ||||
|         for (int chunkIndex = 0; chunkIndex < chunkCount; chunkIndex++, offset += CHUNK_SIZE) { | ||||
|             mPutMethod = new PutMethod(new URL(uriPrefix + File.separator + chunkIndex)); | ||||
| 
 | ||||
|             if (mRequiredEtag != null && mRequiredEtag.length() > 0) { | ||||
|                 mPutMethod.addRequestHeader(IF_MATCH_HEADER, "\"" + mRequiredEtag + "\""); | ||||
|             } | ||||
| 
 | ||||
|             ((ChunkFromFileRequestBody) mFileRequestBody).setOffset(offset); | ||||
| 
 | ||||
| @ -98,6 +93,12 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation | ||||
|                 result = new RemoteOperationResult<>(new OperationCancelledException()); | ||||
|                 break; | ||||
|             } else { | ||||
|                 mPutMethod = new PutMethod(new URL(uriPrefix + File.separator + chunkIndex), mFileRequestBody); | ||||
| 
 | ||||
|                 if (mRequiredEtag != null && mRequiredEtag.length() > 0) { | ||||
|                     mPutMethod.addRequestHeader(IF_MATCH_HEADER, "\"" + mRequiredEtag + "\""); | ||||
|                 } | ||||
| 
 | ||||
|                 if (chunkIndex == chunkCount - 1) { | ||||
|                     // Added a high timeout to the last chunk due to when the last chunk | ||||
|                     // arrives to the server with the last PUT, all chunks get assembled | ||||
| @ -105,8 +106,6 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation | ||||
|                     mPutMethod.setReadTimeout(LAST_CHUNK_TIMEOUT, TimeUnit.MILLISECONDS); | ||||
|                 } | ||||
| 
 | ||||
|                 mPutMethod.setRequestBody(mFileRequestBody); | ||||
| 
 | ||||
|                 status = client.executeHttpMethod(mPutMethod); | ||||
| 
 | ||||
|                 Timber.d("Upload of " + mLocalPath + " to " + mRemotePath + | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user