mirror of
https://github.com/owncloud/android-library.git
synced 2025-06-07 07:56:19 +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