diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/HttpConstants.java b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/HttpConstants.java index 201d3b3a..2cd4df0d 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/HttpConstants.java +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/http/HttpConstants.java @@ -50,6 +50,7 @@ public class HttpConstants { public static final String CONTENT_TYPE_URLENCODED_UTF8 = "application/x-www-form-urlencoded; charset=utf-8"; public static final String ACCEPT_ENCODING_HEADER = "Accept-Encoding"; public static final String ACCEPT_ENCODING_IDENTITY = "identity"; + public static final String OC_FILE_REMOTE_ID = "OC-FileId"; /*********************************************************************************************************** ************************************************ STATUS CODES ********************************************* diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/CopyRemoteFileOperation.java b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/CopyRemoteFileOperation.java index 9282bd42..79852444 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/CopyRemoteFileOperation.java +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/CopyRemoteFileOperation.java @@ -47,7 +47,7 @@ import java.util.concurrent.TimeUnit; * @author David A. Velasco * @author Christian Schabesberger */ -public class CopyRemoteFileOperation extends RemoteOperation { +public class CopyRemoteFileOperation extends RemoteOperation { private static final String TAG = CopyRemoteFileOperation.class.getSimpleName(); @@ -80,8 +80,7 @@ public class CopyRemoteFileOperation extends RemoteOperation { * @param client Client object to communicate with the remote ownCloud server. */ @Override - protected RemoteOperationResult run(OwnCloudClient client) { - + protected RemoteOperationResult run(OwnCloudClient client) { OwnCloudVersion version = client.getOwnCloudVersion(); boolean versionWithForbiddenChars = (version != null && version.isVersionWithForbiddenCharacters()); @@ -101,9 +100,10 @@ public class CopyRemoteFileOperation extends RemoteOperation { } /// perform remote operation - RemoteOperationResult result = null; + RemoteOperationResult result; try { - CopyMethod copyMethod = new CopyMethod(new URL(client.getUserFilesWebDavUri() + WebdavUtils.encodePath(mSrcRemotePath)), + CopyMethod copyMethod = + new CopyMethod(new URL(client.getUserFilesWebDavUri() + WebdavUtils.encodePath(mSrcRemotePath)), client.getUserFilesWebDavUri() + WebdavUtils.encodePath(mTargetRemotePath), mOverwrite); @@ -113,16 +113,17 @@ public class CopyRemoteFileOperation extends RemoteOperation { final int status = client.executeHttpMethod(copyMethod); if (status == HttpConstants.HTTP_CREATED || status == HttpConstants.HTTP_NO_CONTENT) { + String fileRemoteId = copyMethod.getResponseHeader(HttpConstants.OC_FILE_REMOTE_ID); result = new RemoteOperationResult<>(ResultCode.OK); + result.setData(fileRemoteId); } else if (status == HttpConstants.HTTP_PRECONDITION_FAILED && !mOverwrite) { - result = new RemoteOperationResult<>(ResultCode.INVALID_OVERWRITE); client.exhaustResponse(copyMethod.getResponseBodyAsStream()); /// for other errors that could be explicitly handled, check first: /// http://www.webdav.org/specs/rfc4918.html#rfc.section.9.9.4 - } else { + result = new RemoteOperationResult<>(copyMethod); client.exhaustResponse(copyMethod.getResponseBodyAsStream()); }