diff --git a/app/src/main/java/com/nextcloud/android/sso/InputStreamBinder.java b/app/src/main/java/com/nextcloud/android/sso/InputStreamBinder.java index 31e061b5778c..07410032a255 100644 --- a/app/src/main/java/com/nextcloud/android/sso/InputStreamBinder.java +++ b/app/src/main/java/com/nextcloud/android/sso/InputStreamBinder.java @@ -43,6 +43,7 @@ import org.apache.commons.httpclient.methods.StringRequestEntity; import org.apache.jackrabbit.webdav.DavConstants; import org.apache.jackrabbit.webdav.client.methods.MkColMethod; +import org.apache.jackrabbit.webdav.client.methods.MoveMethod; import org.apache.jackrabbit.webdav.client.methods.PropFindMethod; import org.apache.jackrabbit.webdav.property.DavPropertyNameSet; @@ -280,6 +281,14 @@ private HttpMethodBase buildMethod(NextcloudRequest request, Uri baseUri, InputS method = new DeleteMethod(requestUrl); break; + case "MOVE": + String destUrl = request.getAdditionalParameter(NextcloudRequest.ADDITIONAL_PARAMETER_MOVE_DESTINATION); + boolean overwrite = + request.getAdditionalParameter(NextcloudRequest.ADDITIONAL_PARAMETER_MOVE_OVERWRITE) + .equalsIgnoreCase("true"); + method = new MoveMethod(requestUrl, destUrl, overwrite); + break; + case "PROPFIND": method = new NCPropFindMethod(requestUrl, DavConstants.PROPFIND_ALL_PROP, DavConstants.DEPTH_1); if (request.getRequestBody() != null) { diff --git a/app/src/main/java/com/nextcloud/android/sso/aidl/NextcloudRequest.java b/app/src/main/java/com/nextcloud/android/sso/aidl/NextcloudRequest.java index 2308e01188ab..84b4f4085c71 100644 --- a/app/src/main/java/com/nextcloud/android/sso/aidl/NextcloudRequest.java +++ b/app/src/main/java/com/nextcloud/android/sso/aidl/NextcloudRequest.java @@ -21,9 +21,13 @@ public class NextcloudRequest implements Serializable { private static final long serialVersionUID = 215521212534240L; //assign a long value + public static final String ADDITIONAL_PARAMETER_MOVE_DESTINATION = "Destination"; + public static final String ADDITIONAL_PARAMETER_MOVE_OVERWRITE = "Overwrite"; + private String method; private Map> header = new HashMap<>(); private Map parameter = new HashMap<>(); + private Map additionalParameter = new HashMap<>(); private final Collection parameterV2 = new LinkedList<>(); private String requestBody; private String url; @@ -60,6 +64,15 @@ public Builder setParameter(Map parameter) { return this; } + public Builder setAdditionalParameters(Map ap) { + ncr.additionalParameter = ap; + return this; + } + public Builder setAdditionalParameter(String key, String value) { + ncr.additionalParameter.put(key, value); + return this; + } + public Builder setRequestBody(String requestBody) { ncr.requestBody = requestBody; return this; @@ -103,6 +116,13 @@ public Map getParameter() { return this.parameter; } + public Map getAdditionalParameters() { + return this.additionalParameter; + } + public String getAdditionalParameter(String key) { + return this.additionalParameter.get(key); + } + public String getRequestBody() { return this.requestBody; }