Loading library/src/main/java/com/nextcloud/android/lib/resources/files/FileDownloadLimit.kt 0 → 100644 +16 −0 Original line number Diff line number Diff line /* * Nextcloud Android Library * * SPDX-FileCopyrightText: 2024 ZetaTom <70907959+zetatom@users.noreply.github.com> * SPDX-License-Identifier: MIT */ package com.nextcloud.android.lib.resources.files import java.io.Serializable data class FileDownloadLimit( val token: String, val limit: Int, val count: Int ) : Serializable library/src/main/java/com/nextcloud/android/lib/resources/files/GetFilesDownloadLimitRemoteOperation.kt 0 → 100644 +72 −0 Original line number Diff line number Diff line /* * Nextcloud Android Library * * SPDX-FileCopyrightText: 2024 ZetaTom <70907959+zetatom@users.noreply.github.com> * SPDX-License-Identifier: MIT */ package com.nextcloud.android.lib.resources.files import com.owncloud.android.lib.common.OwnCloudClient import com.owncloud.android.lib.common.network.WebdavEntry import com.owncloud.android.lib.common.operations.RemoteOperationResult import com.owncloud.android.lib.common.utils.Log_OC import com.owncloud.android.lib.resources.OCSRemoteOperation import org.apache.commons.httpclient.HttpStatus import org.apache.jackrabbit.webdav.DavConstants import org.apache.jackrabbit.webdav.client.methods.PropFindMethod import org.apache.jackrabbit.webdav.property.DavPropertyNameSet import org.apache.jackrabbit.webdav.xml.Namespace class GetFilesDownloadLimitRemoteOperation @JvmOverloads constructor( val remotePath: String, val subfiles: Boolean = false ) : OCSRemoteOperation<List<FileDownloadLimit>>() { @Deprecated("Deprecated in Java") override fun run(client: OwnCloudClient): RemoteOperationResult<List<FileDownloadLimit>> { var result: RemoteOperationResult<List<FileDownloadLimit>> var propFindMethod: PropFindMethod? = null val propSet = DavPropertyNameSet() val depth = if (subfiles) DavConstants.DEPTH_1 else DavConstants.DEPTH_0 propSet.add( WebdavEntry.EXTENDED_PROPERTY_FILE_DOWNLOAD_LIMITS, Namespace.getNamespace(WebdavEntry.NAMESPACE_NC) ) try { propFindMethod = PropFindMethod(client.getFilesDavUri(remotePath), propSet, depth) val status = client.executeMethod(propFindMethod) if (status == HttpStatus.SC_MULTI_STATUS || status == HttpStatus.SC_OK) { val response = propFindMethod.responseBodyAsMultiStatus val fileDownloadLimits = response.responses.flatMap { val webdavEntry = WebdavEntry(it, client.filesDavUri.encodedPath!!) webdavEntry.fileDownloadLimit } result = RemoteOperationResult(true, propFindMethod) result.resultData = fileDownloadLimits } else { result = RemoteOperationResult(false, propFindMethod) client.exhaustResponse(propFindMethod.responseBodyAsStream) } } catch (e: Exception) { result = RemoteOperationResult(e) Log_OC.e(TAG, "Exception while reading download limit", e) } finally { propFindMethod?.releaseConnection() } return result } companion object { private val TAG = GetFilesDownloadLimitRemoteOperation::class.java.simpleName } } library/src/main/java/com/nextcloud/android/lib/resources/files/RemoveFilesDownloadLimitRemoteOperation.kt 0 → 100644 +51 −0 Original line number Diff line number Diff line /* * Nextcloud Android Library * * SPDX-FileCopyrightText: 2024 ZetaTom <70907959+zetatom@users.noreply.github.com> * SPDX-License-Identifier: MIT */ package com.nextcloud.android.lib.resources.files import com.nextcloud.common.NextcloudClient import com.nextcloud.operations.DeleteMethod import com.owncloud.android.lib.common.operations.RemoteOperationResult import com.owncloud.android.lib.common.utils.Log_OC import com.owncloud.android.lib.resources.OCSRemoteOperation import org.apache.commons.httpclient.HttpStatus class RemoveFilesDownloadLimitRemoteOperation( val token: String ) : OCSRemoteOperation<Void>() { override fun run(client: NextcloudClient): RemoteOperationResult<Void> { var result: RemoteOperationResult<Void> var deleteMethod: DeleteMethod? = null try { val url = client.baseUri.toString() + String.format(FILES_DOWNLOAD_LIMIT_ENDPOINT, token) + JSON_FORMAT deleteMethod = DeleteMethod(url, true) val status = deleteMethod.execute(client) if (status == HttpStatus.SC_OK) { result = RemoteOperationResult(true, deleteMethod) } else { result = RemoteOperationResult(false, deleteMethod) Log_OC.e(TAG, "Failed to remove download limit") Log_OC.e(TAG, "*** status code: " + status + "; response: " + deleteMethod.getResponseBodyAsString()) } } catch (e: Exception) { result = RemoteOperationResult(e) Log_OC.e(TAG, "Exception while removing download limit", e) } finally { deleteMethod?.releaseConnection() } return result } companion object { private val TAG = RemoveFilesDownloadLimitRemoteOperation::class.java.simpleName private const val FILES_DOWNLOAD_LIMIT_ENDPOINT = "/ocs/v2.php/apps/files_downloadlimit/api/v1/%s/limit" } } library/src/main/java/com/nextcloud/android/lib/resources/files/SetFilesDownloadLimitRemoteOperation.kt 0 → 100644 +54 −0 Original line number Diff line number Diff line /* * Nextcloud Android Library * * SPDX-FileCopyrightText: 2024 ZetaTom <70907959+zetatom@users.noreply.github.com> * SPDX-License-Identifier: MIT */ package com.nextcloud.android.lib.resources.files import com.nextcloud.common.JSONRequestBody import com.nextcloud.common.NextcloudClient import com.nextcloud.operations.PutMethod import com.owncloud.android.lib.common.operations.RemoteOperationResult import com.owncloud.android.lib.common.utils.Log_OC import com.owncloud.android.lib.resources.OCSRemoteOperation import org.apache.commons.httpclient.HttpStatus class SetFilesDownloadLimitRemoteOperation( val token: String, val limit: Int ) : OCSRemoteOperation<Void>() { override fun run(client: NextcloudClient): RemoteOperationResult<Void> { var result: RemoteOperationResult<Void> var putMethod: PutMethod? = null try { val url = client.baseUri.toString() + String.format(FILES_DOWNLOAD_LIMIT_ENDPOINT, token) val jsonRequestBody = JSONRequestBody("limit", limit.toString()) putMethod = PutMethod(url, true, jsonRequestBody.get()) val status = putMethod.execute(client) if (status == HttpStatus.SC_OK) { result = RemoteOperationResult(true, putMethod) } else { result = RemoteOperationResult(false, putMethod) Log_OC.e(TAG, "Failed to set download limit") Log_OC.e(TAG, "*** status code: " + status + "; response: " + putMethod.getResponseBodyAsString()) } } catch (e: Exception) { result = RemoteOperationResult(e) Log_OC.e(TAG, "Exception while setting download limit", e) } finally { putMethod?.releaseConnection() } return result } companion object { private val TAG = SetFilesDownloadLimitRemoteOperation::class.java.simpleName private const val FILES_DOWNLOAD_LIMIT_ENDPOINT = "/ocs/v2.php/apps/files_downloadlimit/api/v1/%s/limit" } } Loading
library/src/main/java/com/nextcloud/android/lib/resources/files/FileDownloadLimit.kt 0 → 100644 +16 −0 Original line number Diff line number Diff line /* * Nextcloud Android Library * * SPDX-FileCopyrightText: 2024 ZetaTom <70907959+zetatom@users.noreply.github.com> * SPDX-License-Identifier: MIT */ package com.nextcloud.android.lib.resources.files import java.io.Serializable data class FileDownloadLimit( val token: String, val limit: Int, val count: Int ) : Serializable
library/src/main/java/com/nextcloud/android/lib/resources/files/GetFilesDownloadLimitRemoteOperation.kt 0 → 100644 +72 −0 Original line number Diff line number Diff line /* * Nextcloud Android Library * * SPDX-FileCopyrightText: 2024 ZetaTom <70907959+zetatom@users.noreply.github.com> * SPDX-License-Identifier: MIT */ package com.nextcloud.android.lib.resources.files import com.owncloud.android.lib.common.OwnCloudClient import com.owncloud.android.lib.common.network.WebdavEntry import com.owncloud.android.lib.common.operations.RemoteOperationResult import com.owncloud.android.lib.common.utils.Log_OC import com.owncloud.android.lib.resources.OCSRemoteOperation import org.apache.commons.httpclient.HttpStatus import org.apache.jackrabbit.webdav.DavConstants import org.apache.jackrabbit.webdav.client.methods.PropFindMethod import org.apache.jackrabbit.webdav.property.DavPropertyNameSet import org.apache.jackrabbit.webdav.xml.Namespace class GetFilesDownloadLimitRemoteOperation @JvmOverloads constructor( val remotePath: String, val subfiles: Boolean = false ) : OCSRemoteOperation<List<FileDownloadLimit>>() { @Deprecated("Deprecated in Java") override fun run(client: OwnCloudClient): RemoteOperationResult<List<FileDownloadLimit>> { var result: RemoteOperationResult<List<FileDownloadLimit>> var propFindMethod: PropFindMethod? = null val propSet = DavPropertyNameSet() val depth = if (subfiles) DavConstants.DEPTH_1 else DavConstants.DEPTH_0 propSet.add( WebdavEntry.EXTENDED_PROPERTY_FILE_DOWNLOAD_LIMITS, Namespace.getNamespace(WebdavEntry.NAMESPACE_NC) ) try { propFindMethod = PropFindMethod(client.getFilesDavUri(remotePath), propSet, depth) val status = client.executeMethod(propFindMethod) if (status == HttpStatus.SC_MULTI_STATUS || status == HttpStatus.SC_OK) { val response = propFindMethod.responseBodyAsMultiStatus val fileDownloadLimits = response.responses.flatMap { val webdavEntry = WebdavEntry(it, client.filesDavUri.encodedPath!!) webdavEntry.fileDownloadLimit } result = RemoteOperationResult(true, propFindMethod) result.resultData = fileDownloadLimits } else { result = RemoteOperationResult(false, propFindMethod) client.exhaustResponse(propFindMethod.responseBodyAsStream) } } catch (e: Exception) { result = RemoteOperationResult(e) Log_OC.e(TAG, "Exception while reading download limit", e) } finally { propFindMethod?.releaseConnection() } return result } companion object { private val TAG = GetFilesDownloadLimitRemoteOperation::class.java.simpleName } }
library/src/main/java/com/nextcloud/android/lib/resources/files/RemoveFilesDownloadLimitRemoteOperation.kt 0 → 100644 +51 −0 Original line number Diff line number Diff line /* * Nextcloud Android Library * * SPDX-FileCopyrightText: 2024 ZetaTom <70907959+zetatom@users.noreply.github.com> * SPDX-License-Identifier: MIT */ package com.nextcloud.android.lib.resources.files import com.nextcloud.common.NextcloudClient import com.nextcloud.operations.DeleteMethod import com.owncloud.android.lib.common.operations.RemoteOperationResult import com.owncloud.android.lib.common.utils.Log_OC import com.owncloud.android.lib.resources.OCSRemoteOperation import org.apache.commons.httpclient.HttpStatus class RemoveFilesDownloadLimitRemoteOperation( val token: String ) : OCSRemoteOperation<Void>() { override fun run(client: NextcloudClient): RemoteOperationResult<Void> { var result: RemoteOperationResult<Void> var deleteMethod: DeleteMethod? = null try { val url = client.baseUri.toString() + String.format(FILES_DOWNLOAD_LIMIT_ENDPOINT, token) + JSON_FORMAT deleteMethod = DeleteMethod(url, true) val status = deleteMethod.execute(client) if (status == HttpStatus.SC_OK) { result = RemoteOperationResult(true, deleteMethod) } else { result = RemoteOperationResult(false, deleteMethod) Log_OC.e(TAG, "Failed to remove download limit") Log_OC.e(TAG, "*** status code: " + status + "; response: " + deleteMethod.getResponseBodyAsString()) } } catch (e: Exception) { result = RemoteOperationResult(e) Log_OC.e(TAG, "Exception while removing download limit", e) } finally { deleteMethod?.releaseConnection() } return result } companion object { private val TAG = RemoveFilesDownloadLimitRemoteOperation::class.java.simpleName private const val FILES_DOWNLOAD_LIMIT_ENDPOINT = "/ocs/v2.php/apps/files_downloadlimit/api/v1/%s/limit" } }
library/src/main/java/com/nextcloud/android/lib/resources/files/SetFilesDownloadLimitRemoteOperation.kt 0 → 100644 +54 −0 Original line number Diff line number Diff line /* * Nextcloud Android Library * * SPDX-FileCopyrightText: 2024 ZetaTom <70907959+zetatom@users.noreply.github.com> * SPDX-License-Identifier: MIT */ package com.nextcloud.android.lib.resources.files import com.nextcloud.common.JSONRequestBody import com.nextcloud.common.NextcloudClient import com.nextcloud.operations.PutMethod import com.owncloud.android.lib.common.operations.RemoteOperationResult import com.owncloud.android.lib.common.utils.Log_OC import com.owncloud.android.lib.resources.OCSRemoteOperation import org.apache.commons.httpclient.HttpStatus class SetFilesDownloadLimitRemoteOperation( val token: String, val limit: Int ) : OCSRemoteOperation<Void>() { override fun run(client: NextcloudClient): RemoteOperationResult<Void> { var result: RemoteOperationResult<Void> var putMethod: PutMethod? = null try { val url = client.baseUri.toString() + String.format(FILES_DOWNLOAD_LIMIT_ENDPOINT, token) val jsonRequestBody = JSONRequestBody("limit", limit.toString()) putMethod = PutMethod(url, true, jsonRequestBody.get()) val status = putMethod.execute(client) if (status == HttpStatus.SC_OK) { result = RemoteOperationResult(true, putMethod) } else { result = RemoteOperationResult(false, putMethod) Log_OC.e(TAG, "Failed to set download limit") Log_OC.e(TAG, "*** status code: " + status + "; response: " + putMethod.getResponseBodyAsString()) } } catch (e: Exception) { result = RemoteOperationResult(e) Log_OC.e(TAG, "Exception while setting download limit", e) } finally { putMethod?.releaseConnection() } return result } companion object { private val TAG = SetFilesDownloadLimitRemoteOperation::class.java.simpleName private const val FILES_DOWNLOAD_LIMIT_ENDPOINT = "/ocs/v2.php/apps/files_downloadlimit/api/v1/%s/limit" } }