Loading library/src/main/java/com/nextcloud/android/lib/resources/users/GenerateAppPasswordRemoteOperation.java +14 −3 Original line number Diff line number Diff line Loading @@ -7,6 +7,9 @@ */ package com.nextcloud.android.lib.resources.users; import com.nextcloud.common.SessionTimeOut; import com.nextcloud.common.SessionTimeOutKt; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.common.utils.Log_OC; Loading @@ -23,8 +26,6 @@ import org.json.JSONObject; public class GenerateAppPasswordRemoteOperation extends OCSRemoteOperation { private static final String TAG = GenerateAppPasswordRemoteOperation.class.getSimpleName(); private static final int SYNC_READ_TIMEOUT = 40000; private static final int SYNC_CONNECTION_TIMEOUT = 5000; private static final String DIRECT_ENDPOINT = "/ocs/v2.php/core/getapppassword"; // JSON node names Loading @@ -32,6 +33,16 @@ public class GenerateAppPasswordRemoteOperation extends OCSRemoteOperation { private static final String NODE_DATA = "data"; private static final String NODE_APPPASSWORD = "apppassword"; private final SessionTimeOut sessionTimeOut; public GenerateAppPasswordRemoteOperation() { this(SessionTimeOutKt.getDefaultSessionTimeOut()); } public GenerateAppPasswordRemoteOperation(SessionTimeOut sessionTimeOut) { this.sessionTimeOut = sessionTimeOut; } protected RemoteOperationResult run(OwnCloudClient client) { RemoteOperationResult result; GetMethod getMethod = null; Loading @@ -42,7 +53,7 @@ public class GenerateAppPasswordRemoteOperation extends OCSRemoteOperation { // remote request getMethod.addRequestHeader(OCS_API_HEADER, OCS_API_HEADER_VALUE); int status = client.executeMethod(getMethod, SYNC_READ_TIMEOUT, SYNC_CONNECTION_TIMEOUT); int status = client.executeMethod(getMethod, sessionTimeOut.getReadTimeOut(), sessionTimeOut.getConnectionTimeOut()); if (status == HttpStatus.SC_OK) { String response = getMethod.getResponseBodyAsString(); Loading library/src/main/java/com/nextcloud/android/lib/richWorkspace/RichWorkspaceDirectEditingRemoteOperation.java +13 −7 Original line number Diff line number Diff line Loading @@ -8,6 +8,8 @@ package com.nextcloud.android.lib.richWorkspace; import com.google.gson.GsonBuilder; import com.nextcloud.common.SessionTimeOut; import com.nextcloud.common.SessionTimeOutKt; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; Loading @@ -27,15 +29,19 @@ import java.util.Map; public class RichWorkspaceDirectEditingRemoteOperation extends RemoteOperation { private static final String TAG = RichWorkspaceDirectEditingRemoteOperation.class.getSimpleName(); private static final int SYNC_READ_TIMEOUT = 40000; private static final int SYNC_CONNECTION_TIMEOUT = 5000; private static final String DIRECT_ENDPOINT = "/ocs/v2.php/apps/text/workspace/direct"; private static final String PATH = "path"; private String path; private final SessionTimeOut sessionTimeOut; private final String path; public RichWorkspaceDirectEditingRemoteOperation(String path) { this(path, SessionTimeOutKt.getDefaultSessionTimeOut()); } public RichWorkspaceDirectEditingRemoteOperation(String path, SessionTimeOut sessionTimeOut) { this.path = path; this.sessionTimeOut = sessionTimeOut; } protected RemoteOperationResult run(OwnCloudClient client) { Loading @@ -54,7 +60,7 @@ public class RichWorkspaceDirectEditingRemoteOperation extends RemoteOperation { postMethod.setRequestEntity(new StringRequestEntity(json)); int status = client.executeMethod(postMethod, SYNC_READ_TIMEOUT, SYNC_CONNECTION_TIMEOUT); int status = client.executeMethod(postMethod, sessionTimeOut.getReadTimeOut(), sessionTimeOut.getConnectionTimeOut()); if (status == HttpStatus.SC_OK) { String response = postMethod.getResponseBodyAsString(); Loading @@ -63,14 +69,14 @@ public class RichWorkspaceDirectEditingRemoteOperation extends RemoteOperation { JSONObject respJSON = new JSONObject(response); String url = (String) respJSON.getJSONObject("ocs").getJSONObject("data").get("url"); result = new RemoteOperationResult(true, postMethod); result = new RemoteOperationResult<>(true, postMethod); result.setSingleData(url); } else { result = new RemoteOperationResult(false, postMethod); result = new RemoteOperationResult<>(false, postMethod); client.exhaustResponse(postMethod.getResponseBodyAsStream()); } } catch (Exception e) { result = new RemoteOperationResult(e); result = new RemoteOperationResult<>(e); Log_OC.e(TAG, "Get edit url for rich workspace failed: " + result.getLogMessage(), result.getException()); } finally { Loading library/src/main/java/com/nextcloud/common/SessionTimeOut.kt 0 → 100644 +13 −0 Original line number Diff line number Diff line /* * Nextcloud Android Library * * SPDX-FileCopyrightText: 2024 Alper Ozturk <alper.ozturk@nextcloud.com> * SPDX-License-Identifier: MIT */ package com.nextcloud.common data class SessionTimeOut(val readTimeOut: Int, val connectionTimeOut: Int) @Suppress("Detekt.MagicNumber") val defaultSessionTimeOut = SessionTimeOut(60000, 15000) library/src/main/java/com/owncloud/android/lib/resources/e2ee/GetMetadataRemoteOperation.java +11 −5 Original line number Diff line number Diff line Loading @@ -7,6 +7,8 @@ */ package com.owncloud.android.lib.resources.e2ee; import com.nextcloud.common.SessionTimeOut; import com.nextcloud.common.SessionTimeOutKt; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; Loading @@ -25,8 +27,6 @@ import org.json.JSONObject; public class GetMetadataRemoteOperation extends RemoteOperation<MetadataResponse> { private static final String TAG = GetMetadataRemoteOperation.class.getSimpleName(); private static final int SYNC_READ_TIMEOUT = 40000; private static final int SYNC_CONNECTION_TIMEOUT = 5000; private static final String METADATA_V1_URL = "/ocs/v2.php/apps/end_to_end_encryption/api/v1/meta-data/"; private static final String METADATA_V2_URL = "/ocs/v2.php/apps/end_to_end_encryption/api/v2/meta-data/"; Loading @@ -38,11 +38,18 @@ public class GetMetadataRemoteOperation extends RemoteOperation<MetadataResponse private final long fileId; private final SessionTimeOut sessionTimeOut; /** * Constructor */ public GetMetadataRemoteOperation(long fileId) { this(fileId, SessionTimeOutKt.getDefaultSessionTimeOut()); } public GetMetadataRemoteOperation(long fileId, SessionTimeOut sessionTimeOut) { this.fileId = fileId; this.sessionTimeOut = sessionTimeOut; } /** Loading @@ -58,14 +65,14 @@ public class GetMetadataRemoteOperation extends RemoteOperation<MetadataResponse getMethod = new GetMethod(client.getBaseUri() + METADATA_V2_URL + fileId + JSON_FORMAT); getMethod.addRequestHeader(OCS_API_HEADER, OCS_API_HEADER_VALUE); int status = client.executeMethod(getMethod, SYNC_READ_TIMEOUT, SYNC_CONNECTION_TIMEOUT); int status = client.executeMethod(getMethod, sessionTimeOut.getReadTimeOut(), sessionTimeOut.getConnectionTimeOut()); if (status == HttpStatus.SC_NOT_FOUND || status == HttpStatus.SC_INTERNAL_SERVER_ERROR) { // retry with v1 getMethod = new GetMethod(client.getBaseUri() + METADATA_V1_URL + fileId + JSON_FORMAT); getMethod.addRequestHeader(OCS_API_HEADER, OCS_API_HEADER_VALUE); status = client.executeMethod(getMethod, SYNC_READ_TIMEOUT, SYNC_CONNECTION_TIMEOUT); status = client.executeMethod(getMethod, sessionTimeOut.getReadTimeOut(), sessionTimeOut.getConnectionTimeOut()); } if (status == HttpStatus.SC_OK) { Loading Loading @@ -102,5 +109,4 @@ public class GetMetadataRemoteOperation extends RemoteOperation<MetadataResponse } return result; } } library/src/main/java/com/owncloud/android/lib/resources/e2ee/LockFileRemoteOperation.java +19 −6 Original line number Diff line number Diff line Loading @@ -7,6 +7,8 @@ */ package com.owncloud.android.lib.resources.e2ee; import com.nextcloud.common.SessionTimeOut; import com.nextcloud.common.SessionTimeOutKt; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; Loading @@ -23,29 +25,40 @@ import org.json.JSONObject; public class LockFileRemoteOperation extends RemoteOperation<String> { private static final String TAG = LockFileRemoteOperation.class.getSimpleName(); private static final int SYNC_READ_TIMEOUT = 40000; private static final int SYNC_CONNECTION_TIMEOUT = 5000; private static final String LOCK_FILE_URL = "/ocs/v2.php/apps/end_to_end_encryption/api/v1/lock/"; private static final String COUNTER_HEADER = "X-NC-E2EE-COUNTER"; private final long localId; private long counter = -1; private final long counter; private static final long defaultCounter = -1; // JSON node names private static final String NODE_OCS = "ocs"; private static final String NODE_DATA = "data"; private final SessionTimeOut sessionTimeOut; /** * Constructor */ public LockFileRemoteOperation(long localId, long counter) { this.localId = localId; this.counter = counter; this(localId, counter, SessionTimeOutKt.getDefaultSessionTimeOut()); } public LockFileRemoteOperation(long localId) { this(localId, SessionTimeOutKt.getDefaultSessionTimeOut()); } public LockFileRemoteOperation(long localId, SessionTimeOut sessionTimeOut) { this(localId, defaultCounter, sessionTimeOut); } public LockFileRemoteOperation(long localId, long counter, SessionTimeOut sessionTimeOut) { this.localId = localId; this.counter = counter; this.sessionTimeOut = sessionTimeOut; } /** Loading @@ -67,7 +80,7 @@ public class LockFileRemoteOperation extends RemoteOperation<String> { postMethod.addRequestHeader(COUNTER_HEADER, String.valueOf(counter)); } int status = client.executeMethod(postMethod, SYNC_READ_TIMEOUT, SYNC_CONNECTION_TIMEOUT); int status = client.executeMethod(postMethod, sessionTimeOut.getReadTimeOut(), sessionTimeOut.getConnectionTimeOut()); if (status == HttpStatus.SC_OK) { String response = postMethod.getResponseBodyAsString(); Loading Loading
library/src/main/java/com/nextcloud/android/lib/resources/users/GenerateAppPasswordRemoteOperation.java +14 −3 Original line number Diff line number Diff line Loading @@ -7,6 +7,9 @@ */ package com.nextcloud.android.lib.resources.users; import com.nextcloud.common.SessionTimeOut; import com.nextcloud.common.SessionTimeOutKt; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.common.utils.Log_OC; Loading @@ -23,8 +26,6 @@ import org.json.JSONObject; public class GenerateAppPasswordRemoteOperation extends OCSRemoteOperation { private static final String TAG = GenerateAppPasswordRemoteOperation.class.getSimpleName(); private static final int SYNC_READ_TIMEOUT = 40000; private static final int SYNC_CONNECTION_TIMEOUT = 5000; private static final String DIRECT_ENDPOINT = "/ocs/v2.php/core/getapppassword"; // JSON node names Loading @@ -32,6 +33,16 @@ public class GenerateAppPasswordRemoteOperation extends OCSRemoteOperation { private static final String NODE_DATA = "data"; private static final String NODE_APPPASSWORD = "apppassword"; private final SessionTimeOut sessionTimeOut; public GenerateAppPasswordRemoteOperation() { this(SessionTimeOutKt.getDefaultSessionTimeOut()); } public GenerateAppPasswordRemoteOperation(SessionTimeOut sessionTimeOut) { this.sessionTimeOut = sessionTimeOut; } protected RemoteOperationResult run(OwnCloudClient client) { RemoteOperationResult result; GetMethod getMethod = null; Loading @@ -42,7 +53,7 @@ public class GenerateAppPasswordRemoteOperation extends OCSRemoteOperation { // remote request getMethod.addRequestHeader(OCS_API_HEADER, OCS_API_HEADER_VALUE); int status = client.executeMethod(getMethod, SYNC_READ_TIMEOUT, SYNC_CONNECTION_TIMEOUT); int status = client.executeMethod(getMethod, sessionTimeOut.getReadTimeOut(), sessionTimeOut.getConnectionTimeOut()); if (status == HttpStatus.SC_OK) { String response = getMethod.getResponseBodyAsString(); Loading
library/src/main/java/com/nextcloud/android/lib/richWorkspace/RichWorkspaceDirectEditingRemoteOperation.java +13 −7 Original line number Diff line number Diff line Loading @@ -8,6 +8,8 @@ package com.nextcloud.android.lib.richWorkspace; import com.google.gson.GsonBuilder; import com.nextcloud.common.SessionTimeOut; import com.nextcloud.common.SessionTimeOutKt; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; Loading @@ -27,15 +29,19 @@ import java.util.Map; public class RichWorkspaceDirectEditingRemoteOperation extends RemoteOperation { private static final String TAG = RichWorkspaceDirectEditingRemoteOperation.class.getSimpleName(); private static final int SYNC_READ_TIMEOUT = 40000; private static final int SYNC_CONNECTION_TIMEOUT = 5000; private static final String DIRECT_ENDPOINT = "/ocs/v2.php/apps/text/workspace/direct"; private static final String PATH = "path"; private String path; private final SessionTimeOut sessionTimeOut; private final String path; public RichWorkspaceDirectEditingRemoteOperation(String path) { this(path, SessionTimeOutKt.getDefaultSessionTimeOut()); } public RichWorkspaceDirectEditingRemoteOperation(String path, SessionTimeOut sessionTimeOut) { this.path = path; this.sessionTimeOut = sessionTimeOut; } protected RemoteOperationResult run(OwnCloudClient client) { Loading @@ -54,7 +60,7 @@ public class RichWorkspaceDirectEditingRemoteOperation extends RemoteOperation { postMethod.setRequestEntity(new StringRequestEntity(json)); int status = client.executeMethod(postMethod, SYNC_READ_TIMEOUT, SYNC_CONNECTION_TIMEOUT); int status = client.executeMethod(postMethod, sessionTimeOut.getReadTimeOut(), sessionTimeOut.getConnectionTimeOut()); if (status == HttpStatus.SC_OK) { String response = postMethod.getResponseBodyAsString(); Loading @@ -63,14 +69,14 @@ public class RichWorkspaceDirectEditingRemoteOperation extends RemoteOperation { JSONObject respJSON = new JSONObject(response); String url = (String) respJSON.getJSONObject("ocs").getJSONObject("data").get("url"); result = new RemoteOperationResult(true, postMethod); result = new RemoteOperationResult<>(true, postMethod); result.setSingleData(url); } else { result = new RemoteOperationResult(false, postMethod); result = new RemoteOperationResult<>(false, postMethod); client.exhaustResponse(postMethod.getResponseBodyAsStream()); } } catch (Exception e) { result = new RemoteOperationResult(e); result = new RemoteOperationResult<>(e); Log_OC.e(TAG, "Get edit url for rich workspace failed: " + result.getLogMessage(), result.getException()); } finally { Loading
library/src/main/java/com/nextcloud/common/SessionTimeOut.kt 0 → 100644 +13 −0 Original line number Diff line number Diff line /* * Nextcloud Android Library * * SPDX-FileCopyrightText: 2024 Alper Ozturk <alper.ozturk@nextcloud.com> * SPDX-License-Identifier: MIT */ package com.nextcloud.common data class SessionTimeOut(val readTimeOut: Int, val connectionTimeOut: Int) @Suppress("Detekt.MagicNumber") val defaultSessionTimeOut = SessionTimeOut(60000, 15000)
library/src/main/java/com/owncloud/android/lib/resources/e2ee/GetMetadataRemoteOperation.java +11 −5 Original line number Diff line number Diff line Loading @@ -7,6 +7,8 @@ */ package com.owncloud.android.lib.resources.e2ee; import com.nextcloud.common.SessionTimeOut; import com.nextcloud.common.SessionTimeOutKt; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; Loading @@ -25,8 +27,6 @@ import org.json.JSONObject; public class GetMetadataRemoteOperation extends RemoteOperation<MetadataResponse> { private static final String TAG = GetMetadataRemoteOperation.class.getSimpleName(); private static final int SYNC_READ_TIMEOUT = 40000; private static final int SYNC_CONNECTION_TIMEOUT = 5000; private static final String METADATA_V1_URL = "/ocs/v2.php/apps/end_to_end_encryption/api/v1/meta-data/"; private static final String METADATA_V2_URL = "/ocs/v2.php/apps/end_to_end_encryption/api/v2/meta-data/"; Loading @@ -38,11 +38,18 @@ public class GetMetadataRemoteOperation extends RemoteOperation<MetadataResponse private final long fileId; private final SessionTimeOut sessionTimeOut; /** * Constructor */ public GetMetadataRemoteOperation(long fileId) { this(fileId, SessionTimeOutKt.getDefaultSessionTimeOut()); } public GetMetadataRemoteOperation(long fileId, SessionTimeOut sessionTimeOut) { this.fileId = fileId; this.sessionTimeOut = sessionTimeOut; } /** Loading @@ -58,14 +65,14 @@ public class GetMetadataRemoteOperation extends RemoteOperation<MetadataResponse getMethod = new GetMethod(client.getBaseUri() + METADATA_V2_URL + fileId + JSON_FORMAT); getMethod.addRequestHeader(OCS_API_HEADER, OCS_API_HEADER_VALUE); int status = client.executeMethod(getMethod, SYNC_READ_TIMEOUT, SYNC_CONNECTION_TIMEOUT); int status = client.executeMethod(getMethod, sessionTimeOut.getReadTimeOut(), sessionTimeOut.getConnectionTimeOut()); if (status == HttpStatus.SC_NOT_FOUND || status == HttpStatus.SC_INTERNAL_SERVER_ERROR) { // retry with v1 getMethod = new GetMethod(client.getBaseUri() + METADATA_V1_URL + fileId + JSON_FORMAT); getMethod.addRequestHeader(OCS_API_HEADER, OCS_API_HEADER_VALUE); status = client.executeMethod(getMethod, SYNC_READ_TIMEOUT, SYNC_CONNECTION_TIMEOUT); status = client.executeMethod(getMethod, sessionTimeOut.getReadTimeOut(), sessionTimeOut.getConnectionTimeOut()); } if (status == HttpStatus.SC_OK) { Loading Loading @@ -102,5 +109,4 @@ public class GetMetadataRemoteOperation extends RemoteOperation<MetadataResponse } return result; } }
library/src/main/java/com/owncloud/android/lib/resources/e2ee/LockFileRemoteOperation.java +19 −6 Original line number Diff line number Diff line Loading @@ -7,6 +7,8 @@ */ package com.owncloud.android.lib.resources.e2ee; import com.nextcloud.common.SessionTimeOut; import com.nextcloud.common.SessionTimeOutKt; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; Loading @@ -23,29 +25,40 @@ import org.json.JSONObject; public class LockFileRemoteOperation extends RemoteOperation<String> { private static final String TAG = LockFileRemoteOperation.class.getSimpleName(); private static final int SYNC_READ_TIMEOUT = 40000; private static final int SYNC_CONNECTION_TIMEOUT = 5000; private static final String LOCK_FILE_URL = "/ocs/v2.php/apps/end_to_end_encryption/api/v1/lock/"; private static final String COUNTER_HEADER = "X-NC-E2EE-COUNTER"; private final long localId; private long counter = -1; private final long counter; private static final long defaultCounter = -1; // JSON node names private static final String NODE_OCS = "ocs"; private static final String NODE_DATA = "data"; private final SessionTimeOut sessionTimeOut; /** * Constructor */ public LockFileRemoteOperation(long localId, long counter) { this.localId = localId; this.counter = counter; this(localId, counter, SessionTimeOutKt.getDefaultSessionTimeOut()); } public LockFileRemoteOperation(long localId) { this(localId, SessionTimeOutKt.getDefaultSessionTimeOut()); } public LockFileRemoteOperation(long localId, SessionTimeOut sessionTimeOut) { this(localId, defaultCounter, sessionTimeOut); } public LockFileRemoteOperation(long localId, long counter, SessionTimeOut sessionTimeOut) { this.localId = localId; this.counter = counter; this.sessionTimeOut = sessionTimeOut; } /** Loading @@ -67,7 +80,7 @@ public class LockFileRemoteOperation extends RemoteOperation<String> { postMethod.addRequestHeader(COUNTER_HEADER, String.valueOf(counter)); } int status = client.executeMethod(postMethod, SYNC_READ_TIMEOUT, SYNC_CONNECTION_TIMEOUT); int status = client.executeMethod(postMethod, sessionTimeOut.getReadTimeOut(), sessionTimeOut.getConnectionTimeOut()); if (status == HttpStatus.SC_OK) { String response = postMethod.getResponseBodyAsString(); Loading