From fc07af23643b3c6a1b7df7c4c81b57482111d4a1 Mon Sep 17 00:00:00 2001 From: masensio Date: Fri, 13 Mar 2015 13:53:36 +0100 Subject: [PATCH] Add user agent in all the request --- .../ChunkedUploadRemoteFileOperation.java | 1 + .../files/CreateRemoteFolderOperation.java | 9 ++++++--- .../files/DownloadRemoteFileOperation.java | 20 +++++++++++++------ .../files/ExistenceCheckRemoteOperation.java | 17 ++++++++++++---- .../files/MoveRemoteFileOperation.java | 1 + .../files/ReadRemoteFileOperation.java | 1 + .../files/ReadRemoteFolderOperation.java | 1 + .../files/RemoveRemoteFileOperation.java | 4 +++- .../files/RenameRemoteFileOperation.java | 17 +++++++++++----- .../files/UploadRemoteFileOperation.java | 16 ++++++++++----- .../shares/CreateRemoteShareOperation.java | 5 ++++- .../GetRemoteSharesForFileOperation.java | 1 + .../shares/GetRemoteSharesOperation.java | 1 + .../shares/RemoveRemoteShareOperation.java | 1 + .../status/GetRemoteStatusOperation.java | 1 + .../users/GetRemoteUserNameOperation.java | 1 + 16 files changed, 72 insertions(+), 25 deletions(-) diff --git a/src/com/owncloud/android/lib/resources/files/ChunkedUploadRemoteFileOperation.java b/src/com/owncloud/android/lib/resources/files/ChunkedUploadRemoteFileOperation.java index 89379dda..beeef181 100644 --- a/src/com/owncloud/android/lib/resources/files/ChunkedUploadRemoteFileOperation.java +++ b/src/com/owncloud/android/lib/resources/files/ChunkedUploadRemoteFileOperation.java @@ -75,6 +75,7 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation } mPutMethod = new PutMethod(uriPrefix + chunkCount + "-" + chunkIndex); mPutMethod.addRequestHeader(OC_CHUNKED_HEADER, OC_CHUNKED_HEADER); + mPutMethod.addRequestHeader(USER_AGENT_HEADER, getUserAgent()); ((ChunkFromFileChannelRequestEntity)mEntity).setOffset(offset); mPutMethod.setRequestEntity(mEntity); status = client.executeMethod(mPutMethod); diff --git a/src/com/owncloud/android/lib/resources/files/CreateRemoteFolderOperation.java b/src/com/owncloud/android/lib/resources/files/CreateRemoteFolderOperation.java index 0d248e6f..9f611b2a 100644 --- a/src/com/owncloud/android/lib/resources/files/CreateRemoteFolderOperation.java +++ b/src/com/owncloud/android/lib/resources/files/CreateRemoteFolderOperation.java @@ -78,7 +78,8 @@ public class CreateRemoteFolderOperation extends RemoteOperation { result = createFolder(client); if (!result.isSuccess() && mCreateFullPath && RemoteOperationResult.ResultCode.CONFLICT == result.getCode()) { - result = createParentFolder(FileUtils.getParentPath(mRemotePath), client); + result = createParentFolder(FileUtils.getParentPath(mRemotePath), client, + getUserAgent()); if (result.isSuccess()) { result = createFolder(client); // second (and last) try } @@ -97,6 +98,7 @@ public class CreateRemoteFolderOperation extends RemoteOperation { MkColMethod mkcol = null; try { mkcol = new MkColMethod(client.getWebdavUri() + WebdavUtils.encodePath(mRemotePath)); + mkcol.addRequestHeader(USER_AGENT_HEADER, getUserAgent()); int status = client.executeMethod(mkcol, READ_TIMEOUT, CONNECTION_TIMEOUT); result = new RemoteOperationResult(mkcol.succeeded(), status, mkcol.getResponseHeaders()); Log_OC.d(TAG, "Create directory " + mRemotePath + ": " + result.getLogMessage()); @@ -113,10 +115,11 @@ public class CreateRemoteFolderOperation extends RemoteOperation { return result; } - private RemoteOperationResult createParentFolder(String parentPath, OwnCloudClient client) { + private RemoteOperationResult createParentFolder(String parentPath, OwnCloudClient client, + String userAgent) { RemoteOperation operation = new CreateRemoteFolderOperation(parentPath, mCreateFullPath); - return operation.execute(client); + return operation.execute(client, userAgent); } diff --git a/src/com/owncloud/android/lib/resources/files/DownloadRemoteFileOperation.java b/src/com/owncloud/android/lib/resources/files/DownloadRemoteFileOperation.java index 551685f4..8675f065 100644 --- a/src/com/owncloud/android/lib/resources/files/DownloadRemoteFileOperation.java +++ b/src/com/owncloud/android/lib/resources/files/DownloadRemoteFileOperation.java @@ -82,22 +82,27 @@ public class DownloadRemoteFileOperation extends RemoteOperation { try { tmpFile.getParentFile().mkdirs(); int status = downloadFile(client, tmpFile); - result = new RemoteOperationResult(isSuccess(status), status, (mGet != null ? mGet.getResponseHeaders() : null)); - Log_OC.i(TAG, "Download of " + mRemotePath + " to " + getTmpPath() + ": " + result.getLogMessage()); + result = new RemoteOperationResult(isSuccess(status), status, + (mGet != null ? mGet.getResponseHeaders() : null)); + Log_OC.i(TAG, "Download of " + mRemotePath + " to " + getTmpPath() + ": " + + result.getLogMessage()); } catch (Exception e) { result = new RemoteOperationResult(e); - Log_OC.e(TAG, "Download of " + mRemotePath + " to " + getTmpPath() + ": " + result.getLogMessage(), e); + Log_OC.e(TAG, "Download of " + mRemotePath + " to " + getTmpPath() + ": " + + result.getLogMessage(), e); } return result; } - protected int downloadFile(OwnCloudClient client, File targetFile) throws HttpException, IOException, OperationCancelledException { + protected int downloadFile(OwnCloudClient client, File targetFile) throws HttpException, + IOException, OperationCancelledException { int status = -1; boolean savedFile = false; mGet = new GetMethod(client.getWebdavUri() + WebdavUtils.encodePath(mRemotePath)); + mGet.addRequestHeader(USER_AGENT_HEADER, getUserAgent()); Iterator it = null; FileOutputStream fos = null; @@ -110,7 +115,9 @@ public class DownloadRemoteFileOperation extends RemoteOperation { long transferred = 0; Header contentLength = mGet.getResponseHeader("Content-Length"); - long totalToTransfer = (contentLength != null && contentLength.getValue().length() >0) ? Long.parseLong(contentLength.getValue()) : 0; + long totalToTransfer = (contentLength != null && + contentLength.getValue().length() >0) ? + Long.parseLong(contentLength.getValue()) : 0; byte[] bytes = new byte[4096]; int readResult = 0; @@ -126,7 +133,8 @@ public class DownloadRemoteFileOperation extends RemoteOperation { synchronized (mDataTransferListeners) { it = mDataTransferListeners.iterator(); while (it.hasNext()) { - it.next().onTransferProgress(readResult, transferred, totalToTransfer, targetFile.getName()); + it.next().onTransferProgress(readResult, transferred, totalToTransfer, + targetFile.getName()); } } } diff --git a/src/com/owncloud/android/lib/resources/files/ExistenceCheckRemoteOperation.java b/src/com/owncloud/android/lib/resources/files/ExistenceCheckRemoteOperation.java index 9b54ba01..1d8b2e5a 100644 --- a/src/com/owncloud/android/lib/resources/files/ExistenceCheckRemoteOperation.java +++ b/src/com/owncloud/android/lib/resources/files/ExistenceCheckRemoteOperation.java @@ -58,7 +58,8 @@ public class ExistenceCheckRemoteOperation extends RemoteOperation { * * @param remotePath Path to append to the URL owned by the client instance. * @param context Android application context. - * @param successIfAbsent When 'true', the operation finishes in success if the path does NOT exist in the remote server (HTTP 404). + * @param successIfAbsent When 'true', the operation finishes in success if the path does + * NOT exist in the remote server (HTTP 404). */ public ExistenceCheckRemoteOperation(String remotePath, Context context, boolean successIfAbsent) { mPath = (remotePath != null) ? remotePath : ""; @@ -76,15 +77,23 @@ public class ExistenceCheckRemoteOperation extends RemoteOperation { HeadMethod head = null; try { head = new HeadMethod(client.getWebdavUri() + WebdavUtils.encodePath(mPath)); + head.addRequestHeader(USER_AGENT_HEADER, getUserAgent()); int status = client.executeMethod(head, TIMEOUT, TIMEOUT); client.exhaustResponse(head.getResponseBodyAsStream()); - boolean success = (status == HttpStatus.SC_OK && !mSuccessIfAbsent) || (status == HttpStatus.SC_NOT_FOUND && mSuccessIfAbsent); + boolean success = (status == HttpStatus.SC_OK && !mSuccessIfAbsent) || + (status == HttpStatus.SC_NOT_FOUND && mSuccessIfAbsent); result = new RemoteOperationResult(success, status, head.getResponseHeaders()); - Log_OC.d(TAG, "Existence check for " + client.getWebdavUri() + WebdavUtils.encodePath(mPath) + " targeting for " + (mSuccessIfAbsent ? " absence " : " existence ") + "finished with HTTP status " + status + (!success?"(FAIL)":"")); + Log_OC.d(TAG, "Existence check for " + client.getWebdavUri() + + WebdavUtils.encodePath(mPath) + " targeting for " + + (mSuccessIfAbsent ? " absence " : " existence ") + + "finished with HTTP status " + status + (!success?"(FAIL)":"")); } catch (Exception e) { result = new RemoteOperationResult(e); - Log_OC.e(TAG, "Existence check for " + client.getWebdavUri() + WebdavUtils.encodePath(mPath) + " targeting for " + (mSuccessIfAbsent ? " absence " : " existence ") + ": " + result.getLogMessage(), result.getException()); + Log_OC.e(TAG, "Existence check for " + client.getWebdavUri() + + WebdavUtils.encodePath(mPath) + " targeting for " + + (mSuccessIfAbsent ? " absence " : " existence ") + ": " + + result.getLogMessage(), result.getException()); } finally { if (head != null) diff --git a/src/com/owncloud/android/lib/resources/files/MoveRemoteFileOperation.java b/src/com/owncloud/android/lib/resources/files/MoveRemoteFileOperation.java index 1eb88765..419851f3 100644 --- a/src/com/owncloud/android/lib/resources/files/MoveRemoteFileOperation.java +++ b/src/com/owncloud/android/lib/resources/files/MoveRemoteFileOperation.java @@ -113,6 +113,7 @@ public class MoveRemoteFileOperation extends RemoteOperation { client.getWebdavUri() + WebdavUtils.encodePath(mTargetRemotePath), mOverwrite ); + move.addRequestHeader(USER_AGENT_HEADER, getUserAgent()); int status = client.executeMethod(move, MOVE_READ_TIMEOUT, MOVE_CONNECTION_TIMEOUT); /// process response diff --git a/src/com/owncloud/android/lib/resources/files/ReadRemoteFileOperation.java b/src/com/owncloud/android/lib/resources/files/ReadRemoteFileOperation.java index 12c2017f..7700621a 100644 --- a/src/com/owncloud/android/lib/resources/files/ReadRemoteFileOperation.java +++ b/src/com/owncloud/android/lib/resources/files/ReadRemoteFileOperation.java @@ -79,6 +79,7 @@ public class ReadRemoteFileOperation extends RemoteOperation { propfind = new PropFindMethod(client.getWebdavUri() + WebdavUtils.encodePath(mRemotePath), WebdavUtils.getFilePropSet(), // PropFind Properties DavConstants.DEPTH_0); + propfind.addRequestHeader(USER_AGENT_HEADER, getUserAgent()); int status; status = client.executeMethod(propfind, SYNC_READ_TIMEOUT, SYNC_CONNECTION_TIMEOUT); diff --git a/src/com/owncloud/android/lib/resources/files/ReadRemoteFolderOperation.java b/src/com/owncloud/android/lib/resources/files/ReadRemoteFolderOperation.java index 1e93aa22..1c49c688 100644 --- a/src/com/owncloud/android/lib/resources/files/ReadRemoteFolderOperation.java +++ b/src/com/owncloud/android/lib/resources/files/ReadRemoteFolderOperation.java @@ -76,6 +76,7 @@ public class ReadRemoteFolderOperation extends RemoteOperation { query = new PropFindMethod(client.getWebdavUri() + WebdavUtils.encodePath(mRemotePath), WebdavUtils.getAllPropSet(), // PropFind Properties DavConstants.DEPTH_1); + query.addRequestHeader(USER_AGENT_HEADER, getUserAgent()); int status = client.executeMethod(query); // check and process response diff --git a/src/com/owncloud/android/lib/resources/files/RemoveRemoteFileOperation.java b/src/com/owncloud/android/lib/resources/files/RemoveRemoteFileOperation.java index a031c65e..470b4533 100644 --- a/src/com/owncloud/android/lib/resources/files/RemoveRemoteFileOperation.java +++ b/src/com/owncloud/android/lib/resources/files/RemoveRemoteFileOperation.java @@ -68,10 +68,12 @@ public class RemoveRemoteFileOperation extends RemoteOperation { try { delete = new DeleteMethod(client.getWebdavUri() + WebdavUtils.encodePath(mRemotePath)); + delete.addRequestHeader(USER_AGENT_HEADER, getUserAgent()); int status = client.executeMethod(delete, REMOVE_READ_TIMEOUT, REMOVE_CONNECTION_TIMEOUT); delete.getResponseBodyAsString(); // exhaust the response, although not interesting - result = new RemoteOperationResult((delete.succeeded() || status == HttpStatus.SC_NOT_FOUND), status, delete.getResponseHeaders()); + result = new RemoteOperationResult((delete.succeeded() || + status == HttpStatus.SC_NOT_FOUND), status, delete.getResponseHeaders()); Log_OC.i(TAG, "Remove " + mRemotePath + ": " + result.getLogMessage()); } catch (Exception e) { diff --git a/src/com/owncloud/android/lib/resources/files/RenameRemoteFileOperation.java b/src/com/owncloud/android/lib/resources/files/RenameRemoteFileOperation.java index a3161248..592084da 100644 --- a/src/com/owncloud/android/lib/resources/files/RenameRemoteFileOperation.java +++ b/src/com/owncloud/android/lib/resources/files/RenameRemoteFileOperation.java @@ -63,13 +63,15 @@ public class RenameRemoteFileOperation extends RemoteOperation { * @param newName New name to set as the name of file. * @param isFolder 'true' for folder and 'false' for files */ - public RenameRemoteFileOperation(String oldName, String oldRemotePath, String newName, boolean isFolder) { + public RenameRemoteFileOperation(String oldName, String oldRemotePath, String newName, + boolean isFolder) { mOldName = oldName; mOldRemotePath = oldRemotePath; mNewName = newName; String parent = (new File(mOldRemotePath)).getParent(); - parent = (parent.endsWith(FileUtils.PATH_SEPARATOR)) ? parent : parent + FileUtils.PATH_SEPARATOR; + parent = (parent.endsWith(FileUtils.PATH_SEPARATOR)) ? parent : parent + + FileUtils.PATH_SEPARATOR; mNewRemotePath = parent + mNewName; if (isFolder) { mNewRemotePath += FileUtils.PATH_SEPARATOR; @@ -102,17 +104,22 @@ public class RenameRemoteFileOperation extends RemoteOperation { return new RemoteOperationResult(ResultCode.INVALID_OVERWRITE); } - move = new LocalMoveMethod( client.getWebdavUri() + WebdavUtils.encodePath(mOldRemotePath), + move = new LocalMoveMethod( client.getWebdavUri() + + WebdavUtils.encodePath(mOldRemotePath), client.getWebdavUri() + WebdavUtils.encodePath(mNewRemotePath)); + move.addRequestHeader(USER_AGENT_HEADER, getUserAgent()); int status = client.executeMethod(move, RENAME_READ_TIMEOUT, RENAME_CONNECTION_TIMEOUT); move.getResponseBodyAsString(); // exhaust response, although not interesting result = new RemoteOperationResult(move.succeeded(), status, move.getResponseHeaders()); - Log_OC.i(TAG, "Rename " + mOldRemotePath + " to " + mNewRemotePath + ": " + result.getLogMessage()); + Log_OC.i(TAG, "Rename " + mOldRemotePath + " to " + mNewRemotePath + ": " + + result.getLogMessage()); } catch (Exception e) { result = new RemoteOperationResult(e); - Log_OC.e(TAG, "Rename " + mOldRemotePath + " to " + ((mNewRemotePath==null) ? mNewName : mNewRemotePath) + ": " + result.getLogMessage(), e); + Log_OC.e(TAG, "Rename " + mOldRemotePath + " to " + + ((mNewRemotePath==null) ? mNewName : mNewRemotePath) + ": " + + result.getLogMessage(), e); } finally { if (move != null) diff --git a/src/com/owncloud/android/lib/resources/files/UploadRemoteFileOperation.java b/src/com/owncloud/android/lib/resources/files/UploadRemoteFileOperation.java index dd707462..b8119430 100644 --- a/src/com/owncloud/android/lib/resources/files/UploadRemoteFileOperation.java +++ b/src/com/owncloud/android/lib/resources/files/UploadRemoteFileOperation.java @@ -80,13 +80,16 @@ public class UploadRemoteFileOperation extends RemoteOperation { if (mCancellationRequested.get()) { throw new OperationCancelledException(); } else { - mPutMethod = new PutMethod(client.getWebdavUri() + WebdavUtils.encodePath(mRemotePath)); + mPutMethod = new PutMethod(client.getWebdavUri() + + WebdavUtils.encodePath(mRemotePath)); + mPutMethod.addRequestHeader(USER_AGENT_HEADER, getUserAgent()); } } int status = uploadFile(client); - result = new RemoteOperationResult(isSuccess(status), status, (mPutMethod != null ? mPutMethod.getResponseHeaders() : null)); + result = new RemoteOperationResult(isSuccess(status), status, + (mPutMethod != null ? mPutMethod.getResponseHeaders() : null)); } catch (Exception e) { // TODO something cleaner with cancellations @@ -100,16 +103,19 @@ public class UploadRemoteFileOperation extends RemoteOperation { } public boolean isSuccess(int status) { - return ((status == HttpStatus.SC_OK || status == HttpStatus.SC_CREATED || status == HttpStatus.SC_NO_CONTENT)); + return ((status == HttpStatus.SC_OK || status == HttpStatus.SC_CREATED || + status == HttpStatus.SC_NO_CONTENT)); } - protected int uploadFile(OwnCloudClient client) throws HttpException, IOException, OperationCancelledException { + protected int uploadFile(OwnCloudClient client) throws HttpException, IOException, + OperationCancelledException { int status = -1; try { File f = new File(mLocalPath); mEntity = new FileRequestEntity(f, mMimeType); synchronized (mDataTransferListeners) { - ((ProgressiveDataTransferer)mEntity).addDatatransferProgressListeners(mDataTransferListeners); + ((ProgressiveDataTransferer)mEntity) + .addDatatransferProgressListeners(mDataTransferListeners); } mPutMethod.setRequestEntity(mEntity); status = client.executeMethod(mPutMethod); diff --git a/src/com/owncloud/android/lib/resources/shares/CreateRemoteShareOperation.java b/src/com/owncloud/android/lib/resources/shares/CreateRemoteShareOperation.java index 3e153c06..c377ecbc 100644 --- a/src/com/owncloud/android/lib/resources/shares/CreateRemoteShareOperation.java +++ b/src/com/owncloud/android/lib/resources/shares/CreateRemoteShareOperation.java @@ -104,7 +104,10 @@ public class CreateRemoteShareOperation extends RemoteOperation { post = new PostMethod(client.getBaseUri() + ShareUtils.SHARING_API_PATH); //Log_OC.d(TAG, "URL ------> " + client.getBaseUri() + ShareUtils.SHARING_API_PATH); - post.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); // necessary for special characters + post.setRequestHeader( "Content-Type", + "application/x-www-form-urlencoded; charset=utf-8"); // necessary for special characters + post.addRequestHeader(USER_AGENT_HEADER, getUserAgent()); + post.addParameter(PARAM_PATH, mRemoteFilePath); post.addParameter(PARAM_SHARE_TYPE, Integer.toString(mShareType.getValue())); post.addParameter(PARAM_SHARE_WITH, mShareWith); diff --git a/src/com/owncloud/android/lib/resources/shares/GetRemoteSharesForFileOperation.java b/src/com/owncloud/android/lib/resources/shares/GetRemoteSharesForFileOperation.java index 3c53e7f7..599201e5 100644 --- a/src/com/owncloud/android/lib/resources/shares/GetRemoteSharesForFileOperation.java +++ b/src/com/owncloud/android/lib/resources/shares/GetRemoteSharesForFileOperation.java @@ -86,6 +86,7 @@ public class GetRemoteSharesForFileOperation extends RemoteOperation { try { // Get Method get = new GetMethod(client.getBaseUri() + ShareUtils.SHARING_API_PATH); + get.addRequestHeader(USER_AGENT_HEADER, getUserAgent()); // Add Parameters to Get Method get.setQueryString(new NameValuePair[] { diff --git a/src/com/owncloud/android/lib/resources/shares/GetRemoteSharesOperation.java b/src/com/owncloud/android/lib/resources/shares/GetRemoteSharesOperation.java index 38b75194..d414913d 100644 --- a/src/com/owncloud/android/lib/resources/shares/GetRemoteSharesOperation.java +++ b/src/com/owncloud/android/lib/resources/shares/GetRemoteSharesOperation.java @@ -67,6 +67,7 @@ public class GetRemoteSharesOperation extends RemoteOperation { try{ get = new GetMethod(client.getBaseUri() + ShareUtils.SHARING_API_PATH); get.addRequestHeader(OCS_API_HEADER, OCS_API_HEADER_VALUE); + get.addRequestHeader(USER_AGENT_HEADER, getUserAgent()); status = client.executeMethod(get); if(isSuccess(status)) { String response = get.getResponseBodyAsString(); diff --git a/src/com/owncloud/android/lib/resources/shares/RemoveRemoteShareOperation.java b/src/com/owncloud/android/lib/resources/shares/RemoveRemoteShareOperation.java index dea4fe93..e3ddd89c 100644 --- a/src/com/owncloud/android/lib/resources/shares/RemoveRemoteShareOperation.java +++ b/src/com/owncloud/android/lib/resources/shares/RemoveRemoteShareOperation.java @@ -72,6 +72,7 @@ public class RemoveRemoteShareOperation extends RemoteOperation { delete = new DeleteMethod(client.getBaseUri() + ShareUtils.SHARING_API_PATH + id); delete.addRequestHeader(OCS_API_HEADER, OCS_API_HEADER_VALUE); + delete.addRequestHeader(USER_AGENT_HEADER, getUserAgent()); status = client.executeMethod(delete); diff --git a/src/com/owncloud/android/lib/resources/status/GetRemoteStatusOperation.java b/src/com/owncloud/android/lib/resources/status/GetRemoteStatusOperation.java index 3bd7e065..5d841062 100644 --- a/src/com/owncloud/android/lib/resources/status/GetRemoteStatusOperation.java +++ b/src/com/owncloud/android/lib/resources/status/GetRemoteStatusOperation.java @@ -75,6 +75,7 @@ public class GetRemoteStatusOperation extends RemoteOperation { String baseUrlSt = client.getBaseUri().toString(); try { get = new GetMethod(baseUrlSt + AccountUtils.STATUS_PATH); + get.addRequestHeader(USER_AGENT_HEADER, getUserAgent()); client.setFollowRedirects(false); boolean isRedirectToNonSecureConnection = false; diff --git a/src/com/owncloud/android/lib/resources/users/GetRemoteUserNameOperation.java b/src/com/owncloud/android/lib/resources/users/GetRemoteUserNameOperation.java index cecd639f..e7bcb78c 100644 --- a/src/com/owncloud/android/lib/resources/users/GetRemoteUserNameOperation.java +++ b/src/com/owncloud/android/lib/resources/users/GetRemoteUserNameOperation.java @@ -79,6 +79,7 @@ public class GetRemoteUserNameOperation extends RemoteOperation { try { get = new GetMethod(client.getBaseUri() + OCS_ROUTE); get.addRequestHeader(OCS_API_HEADER, OCS_API_HEADER_VALUE); + get.addRequestHeader(USER_AGENT_HEADER, getUserAgent()); status = client.executeMethod(get); if(isSuccess(status)) { String response = get.getResponseBodyAsString();