diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/ShareType.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/ShareType.kt index 826111df..234b4276 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/ShareType.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/ShareType.kt @@ -32,11 +32,12 @@ package com.owncloud.android.lib.resources.shares * 3 - Shared by public link * 4 - Shared by e-mail * 5 - Shared by contact + * 6 - Federated * * @author masensio */ -enum class ShareType private constructor(val value: Int) { +enum class ShareType constructor(val value: Int) { NO_SHARED(-1), USER(0), GROUP(1), @@ -48,16 +49,16 @@ enum class ShareType private constructor(val value: Int) { companion object { fun fromValue(value: Int): ShareType? { - when (value) { - -1 -> return NO_SHARED - 0 -> return USER - 1 -> return GROUP - 3 -> return PUBLIC_LINK - 4 -> return EMAIL - 5 -> return CONTACT - 6 -> return FEDERATED + return when (value) { + -1 -> NO_SHARED + 0 -> USER + 1 -> GROUP + 3 -> PUBLIC_LINK + 4 -> EMAIL + 5 -> CONTACT + 6 -> FEDERATED + else -> null } - return null } } -} \ No newline at end of file +} diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/status/CapabilityBooleanType.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/status/CapabilityBooleanType.kt index bc467e59..7d3d51e7 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/status/CapabilityBooleanType.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/status/CapabilityBooleanType.kt @@ -46,12 +46,12 @@ enum class CapabilityBooleanType private constructor(val value: Int) { companion object { fun fromValue(value: Int): CapabilityBooleanType? { - when (value) { - -1 -> return UNKNOWN - 0 -> return FALSE - 1 -> return TRUE + return when (value) { + -1 -> UNKNOWN + 0 -> FALSE + 1 -> TRUE + else -> null } - return null } fun fromBooleanValue(boolValue: Boolean): CapabilityBooleanType { diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/status/GetRemoteCapabilitiesOperation.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/status/GetRemoteCapabilitiesOperation.kt index 314e3bce..0a0690a7 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/status/GetRemoteCapabilitiesOperation.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/status/GetRemoteCapabilitiesOperation.kt @@ -65,176 +65,8 @@ class GetRemoteCapabilitiesOperation : RemoteOperation() { val status = client.executeHttpMethod(getMethod) val response = getMethod.responseBodyAsString - if (isSuccess(status)) { - Log_OC.d(TAG, "Successful response: " + response!!) - // Parse the response - val respJSON = JSONObject(response) - val respOCS = respJSON.getJSONObject(NODE_OCS) - val respMeta = respOCS.getJSONObject(NODE_META) - val respData = respOCS.getJSONObject(NODE_DATA) - - // Read meta - val statusProp = respMeta.getString(PROPERTY_STATUS).equals("ok", ignoreCase = true) - val statuscode = respMeta.getInt(PROPERTY_STATUSCODE) - val message = respMeta.getString(PROPERTY_MESSAGE) - - if (statusProp) { - val capability = RemoteCapability() - // Add Version - if (respData.has(NODE_VERSION)) { - val respVersion = respData.getJSONObject(NODE_VERSION) - capability.versionMayor = respVersion.getInt(PROPERTY_MAJOR) - capability.versionMinor = respVersion.getInt(PROPERTY_MINOR) - capability.versionMicro = respVersion.getInt(PROPERTY_MICRO) - capability.versionString = respVersion.getString(PROPERTY_STRING) - capability.versionEdition = respVersion.getString(PROPERTY_EDITION) - Log_OC.d(TAG, "*** Added $NODE_VERSION") - } - - // Capabilities Object - if (respData.has(NODE_CAPABILITIES)) { - val respCapabilities = respData.getJSONObject(NODE_CAPABILITIES) - - // Add Core: pollinterval - if (respCapabilities.has(NODE_CORE)) { - val respCore = respCapabilities.getJSONObject(NODE_CORE) - capability.corePollinterval = respCore.getInt(PROPERTY_POLLINTERVAL) - Log_OC.d(TAG, "*** Added $NODE_CORE") - } - - // Add files_sharing: public, user, resharing - if (respCapabilities.has(NODE_FILES_SHARING)) { - val respFilesSharing = respCapabilities.getJSONObject(NODE_FILES_SHARING) - if (respFilesSharing.has(PROPERTY_API_ENABLED)) { - capability.filesSharingApiEnabled = CapabilityBooleanType.fromBooleanValue( - respFilesSharing.getBoolean(PROPERTY_API_ENABLED) - ) - } - - if (respFilesSharing.has(NODE_PUBLIC)) { - val respPublic = respFilesSharing.getJSONObject(NODE_PUBLIC) - capability.filesSharingPublicEnabled = CapabilityBooleanType.fromBooleanValue( - respPublic.getBoolean(PROPERTY_ENABLED) - ) - - if (respPublic.has(NODE_PASSWORD)) { - val respPassword = respPublic.getJSONObject(NODE_PASSWORD) - capability.filesSharingPublicPasswordEnforced = - CapabilityBooleanType.fromBooleanValue( - respPublic.getJSONObject(NODE_PASSWORD).getBoolean(PROPERTY_ENFORCED) - ) - - if (respPassword.has(NODE_ENFORCED_FOR)) { - capability.filesSharingPublicPasswordEnforcedReadOnly = - CapabilityBooleanType.fromBooleanValue( - respPassword.getJSONObject(NODE_ENFORCED_FOR).getBoolean( - PROPERTY_ENFORCED_READ_ONLY - ) - ) - - capability.filesSharingPublicPasswordEnforcedReadWrite = - CapabilityBooleanType.fromBooleanValue( - respPassword.getJSONObject(NODE_ENFORCED_FOR).getBoolean( - PROPERTY_ENFORCED_READ_WRITE - ) - ) - - capability.filesSharingPublicPasswordEnforcedUploadOnly = - CapabilityBooleanType.fromBooleanValue( - respPassword.getJSONObject(NODE_ENFORCED_FOR).getBoolean( - PROPERTY_ENFORCED_UPLOAD_ONLY - ) - ) - } - } - if (respPublic.has(NODE_EXPIRE_DATE)) { - val respExpireDate = respPublic.getJSONObject(NODE_EXPIRE_DATE) - capability.filesSharingPublicExpireDateEnabled = - CapabilityBooleanType.fromBooleanValue( - respExpireDate.getBoolean(PROPERTY_ENABLED) - ) - if (respExpireDate.has(PROPERTY_DAYS)) { - capability.filesSharingPublicExpireDateDays = - respExpireDate.getInt(PROPERTY_DAYS) - } - if (respExpireDate.has(PROPERTY_ENFORCED)) { - capability.filesSharingPublicExpireDateEnforced = - CapabilityBooleanType.fromBooleanValue( - respExpireDate.getBoolean(PROPERTY_ENFORCED) - ) - } - } - if (respPublic.has(PROPERTY_UPLOAD)) { - capability.filesSharingPublicUpload = CapabilityBooleanType.fromBooleanValue( - respPublic.getBoolean(PROPERTY_UPLOAD) - ) - } - if (respPublic.has(PROPERTY_UPLOAD_ONLY)) { - capability.filesSharingPublicSupportsUploadOnly = - CapabilityBooleanType.fromBooleanValue( - respPublic.getBoolean(PROPERTY_UPLOAD_ONLY) - ) - } - if (respPublic.has(PROPERTY_MULTIPLE)) { - capability.filesSharingPublicMultiple = CapabilityBooleanType.fromBooleanValue( - respPublic.getBoolean(PROPERTY_MULTIPLE) - ) - } - } - - if (respFilesSharing.has(NODE_USER)) { - val respUser = respFilesSharing.getJSONObject(NODE_USER) - capability.filesSharingUserSendMail = CapabilityBooleanType.fromBooleanValue( - respUser.getBoolean(PROPERTY_SEND_MAIL) - ) - } - - capability.filesSharingResharing = CapabilityBooleanType.fromBooleanValue( - respFilesSharing.getBoolean(PROPERTY_RESHARING) - ) - if (respFilesSharing.has(NODE_FEDERATION)) { - val respFederation = respFilesSharing.getJSONObject(NODE_FEDERATION) - capability.filesSharingFederationOutgoing = - CapabilityBooleanType.fromBooleanValue(respFederation.getBoolean(PROPERTY_OUTGOING)) - capability.filesSharingFederationIncoming = CapabilityBooleanType.fromBooleanValue( - respFederation.getBoolean(PROPERTY_INCOMING) - ) - } - Log_OC.d(TAG, "*** Added $NODE_FILES_SHARING") - } - - if (respCapabilities.has(NODE_FILES)) { - val respFiles = respCapabilities.getJSONObject(NODE_FILES) - // Add files - capability.filesBigFileChuncking = CapabilityBooleanType.fromBooleanValue( - respFiles.getBoolean(PROPERTY_BIGFILECHUNKING) - ) - if (respFiles.has(PROPERTY_UNDELETE)) { - capability.filesUndelete = CapabilityBooleanType.fromBooleanValue( - respFiles.getBoolean(PROPERTY_UNDELETE) - ) - } - if (respFiles.has(PROPERTY_VERSIONING)) { - capability.filesVersioning = CapabilityBooleanType.fromBooleanValue( - respFiles.getBoolean(PROPERTY_VERSIONING) - ) - } - Log_OC.d(TAG, "*** Added $NODE_FILES") - } - } - // Result - result = RemoteOperationResult(OK) - result.data = capability - - Log_OC.d(TAG, "*** Get Capabilities completed ") - } else { - result = RemoteOperationResult(statuscode, message, null) - Log_OC.e(TAG, "Failed response while getting capabilities from the server ") - Log_OC.e(TAG, "*** status: $statusProp; message: $message") - } - - } else { + if (!isSuccess(status)) { result = RemoteOperationResult(getMethod) Log_OC.e(TAG, "Failed response while getting capabilities from the server ") if (response != null) { @@ -242,6 +74,176 @@ class GetRemoteCapabilitiesOperation : RemoteOperation() { } else { Log_OC.e(TAG, "*** status code: $status") } + + return result + } + + Log_OC.d(TAG, "Successful response: " + response!!) + + // Parse the response + val respJSON = JSONObject(response) + val respOCS = respJSON.getJSONObject(NODE_OCS) + val respMeta = respOCS.getJSONObject(NODE_META) + val respData = respOCS.getJSONObject(NODE_DATA) + + // Read meta + val statusProp = respMeta.getString(PROPERTY_STATUS).equals(PROPERTY_STATUS_OK, ignoreCase = true) + val statuscode = respMeta.getInt(PROPERTY_STATUSCODE) + val message = respMeta.getString(PROPERTY_MESSAGE) + + if (statusProp) { + val capability = RemoteCapability() + // Add Version + if (respData.has(NODE_VERSION)) { + val respVersion = respData.getJSONObject(NODE_VERSION) + capability.versionMayor = respVersion.getInt(PROPERTY_MAJOR) + capability.versionMinor = respVersion.getInt(PROPERTY_MINOR) + capability.versionMicro = respVersion.getInt(PROPERTY_MICRO) + capability.versionString = respVersion.getString(PROPERTY_STRING) + capability.versionEdition = respVersion.getString(PROPERTY_EDITION) + Log_OC.d(TAG, "*** Added $NODE_VERSION") + } + + // Capabilities Object + if (respData.has(NODE_CAPABILITIES)) { + val respCapabilities = respData.getJSONObject(NODE_CAPABILITIES) + + // Add Core: pollinterval + if (respCapabilities.has(NODE_CORE)) { + val respCore = respCapabilities.getJSONObject(NODE_CORE) + capability.corePollinterval = respCore.getInt(PROPERTY_POLLINTERVAL) + Log_OC.d(TAG, "*** Added $NODE_CORE") + } + + // Add files_sharing: public, user, resharing + if (respCapabilities.has(NODE_FILES_SHARING)) { + val respFilesSharing = respCapabilities.getJSONObject(NODE_FILES_SHARING) + if (respFilesSharing.has(PROPERTY_API_ENABLED)) { + capability.filesSharingApiEnabled = CapabilityBooleanType.fromBooleanValue( + respFilesSharing.getBoolean(PROPERTY_API_ENABLED) + ) + } + + if (respFilesSharing.has(NODE_PUBLIC)) { + val respPublic = respFilesSharing.getJSONObject(NODE_PUBLIC) + capability.filesSharingPublicEnabled = CapabilityBooleanType.fromBooleanValue( + respPublic.getBoolean(PROPERTY_ENABLED) + ) + + if (respPublic.has(NODE_PASSWORD)) { + val respPassword = respPublic.getJSONObject(NODE_PASSWORD) + capability.filesSharingPublicPasswordEnforced = + CapabilityBooleanType.fromBooleanValue( + respPublic.getJSONObject(NODE_PASSWORD).getBoolean(PROPERTY_ENFORCED) + ) + + if (respPassword.has(NODE_ENFORCED_FOR)) { + capability.filesSharingPublicPasswordEnforcedReadOnly = + CapabilityBooleanType.fromBooleanValue( + respPassword.getJSONObject(NODE_ENFORCED_FOR).getBoolean( + PROPERTY_ENFORCED_READ_ONLY + ) + ) + + capability.filesSharingPublicPasswordEnforcedReadWrite = + CapabilityBooleanType.fromBooleanValue( + respPassword.getJSONObject(NODE_ENFORCED_FOR).getBoolean( + PROPERTY_ENFORCED_READ_WRITE + ) + ) + + capability.filesSharingPublicPasswordEnforcedUploadOnly = + CapabilityBooleanType.fromBooleanValue( + respPassword.getJSONObject(NODE_ENFORCED_FOR).getBoolean( + PROPERTY_ENFORCED_UPLOAD_ONLY + ) + ) + } + } + if (respPublic.has(NODE_EXPIRE_DATE)) { + val respExpireDate = respPublic.getJSONObject(NODE_EXPIRE_DATE) + capability.filesSharingPublicExpireDateEnabled = + CapabilityBooleanType.fromBooleanValue( + respExpireDate.getBoolean(PROPERTY_ENABLED) + ) + if (respExpireDate.has(PROPERTY_DAYS)) { + capability.filesSharingPublicExpireDateDays = + respExpireDate.getInt(PROPERTY_DAYS) + } + if (respExpireDate.has(PROPERTY_ENFORCED)) { + capability.filesSharingPublicExpireDateEnforced = + CapabilityBooleanType.fromBooleanValue( + respExpireDate.getBoolean(PROPERTY_ENFORCED) + ) + } + } + if (respPublic.has(PROPERTY_UPLOAD)) { + capability.filesSharingPublicUpload = CapabilityBooleanType.fromBooleanValue( + respPublic.getBoolean(PROPERTY_UPLOAD) + ) + } + if (respPublic.has(PROPERTY_UPLOAD_ONLY)) { + capability.filesSharingPublicSupportsUploadOnly = + CapabilityBooleanType.fromBooleanValue( + respPublic.getBoolean(PROPERTY_UPLOAD_ONLY) + ) + } + if (respPublic.has(PROPERTY_MULTIPLE)) { + capability.filesSharingPublicMultiple = CapabilityBooleanType.fromBooleanValue( + respPublic.getBoolean(PROPERTY_MULTIPLE) + ) + } + } + + if (respFilesSharing.has(NODE_USER)) { + val respUser = respFilesSharing.getJSONObject(NODE_USER) + capability.filesSharingUserSendMail = CapabilityBooleanType.fromBooleanValue( + respUser.getBoolean(PROPERTY_SEND_MAIL) + ) + } + + capability.filesSharingResharing = CapabilityBooleanType.fromBooleanValue( + respFilesSharing.getBoolean(PROPERTY_RESHARING) + ) + if (respFilesSharing.has(NODE_FEDERATION)) { + val respFederation = respFilesSharing.getJSONObject(NODE_FEDERATION) + capability.filesSharingFederationOutgoing = + CapabilityBooleanType.fromBooleanValue(respFederation.getBoolean(PROPERTY_OUTGOING)) + capability.filesSharingFederationIncoming = CapabilityBooleanType.fromBooleanValue( + respFederation.getBoolean(PROPERTY_INCOMING) + ) + } + Log_OC.d(TAG, "*** Added $NODE_FILES_SHARING") + } + + if (respCapabilities.has(NODE_FILES)) { + val respFiles = respCapabilities.getJSONObject(NODE_FILES) + // Add files + capability.filesBigFileChuncking = CapabilityBooleanType.fromBooleanValue( + respFiles.getBoolean(PROPERTY_BIGFILECHUNKING) + ) + if (respFiles.has(PROPERTY_UNDELETE)) { + capability.filesUndelete = CapabilityBooleanType.fromBooleanValue( + respFiles.getBoolean(PROPERTY_UNDELETE) + ) + } + if (respFiles.has(PROPERTY_VERSIONING)) { + capability.filesVersioning = CapabilityBooleanType.fromBooleanValue( + respFiles.getBoolean(PROPERTY_VERSIONING) + ) + } + Log_OC.d(TAG, "*** Added $NODE_FILES") + } + } + // Result + result = RemoteOperationResult(OK) + result.data = capability + + Log_OC.d(TAG, "*** Get Capabilities completed ") + } else { + result = RemoteOperationResult(statuscode, message, null) + Log_OC.e(TAG, "Failed response while getting capabilities from the server ") + Log_OC.e(TAG, "*** status: $statusProp; message: $message") } } catch (e: Exception) { @@ -290,6 +292,7 @@ class GetRemoteCapabilitiesOperation : RemoteOperation() { private val NODE_FILES = "files" private val PROPERTY_STATUS = "status" + private val PROPERTY_STATUS_OK = "ok" private val PROPERTY_STATUSCODE = "statuscode" private val PROPERTY_MESSAGE = "message" @@ -320,4 +323,4 @@ class GetRemoteCapabilitiesOperation : RemoteOperation() { private val PROPERTY_UNDELETE = "undelete" private val PROPERTY_VERSIONING = "versioning" } -} \ No newline at end of file +} diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/status/RemoteCapability.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/status/RemoteCapability.kt index 40307a9a..d697d7aa 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/status/RemoteCapability.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/status/RemoteCapability.kt @@ -29,45 +29,41 @@ package com.owncloud.android.lib.resources.status * Contains data of the Capabilities for an account, from the Capabilities API */ class RemoteCapability { - var accountName: String? = null + var accountName: String // Server version - var versionMayor: Int = 0 - var versionMinor: Int = 0 - var versionMicro: Int = 0 - var versionString: String? = null - var versionEdition: String? = null + var versionMayor: Int + var versionMinor: Int + var versionMicro: Int + var versionString: String + var versionEdition: String // Core PollInterval - var corePollinterval: Int = 0 + var corePollinterval: Int // Files Sharing - var filesSharingApiEnabled: CapabilityBooleanType? = null - - var filesSharingPublicEnabled: CapabilityBooleanType? = null - var filesSharingPublicPasswordEnforced: CapabilityBooleanType? = null - var filesSharingPublicPasswordEnforcedReadOnly: CapabilityBooleanType? = null - var filesSharingPublicPasswordEnforcedReadWrite: CapabilityBooleanType? = null - var filesSharingPublicPasswordEnforcedUploadOnly: CapabilityBooleanType? = null - var filesSharingPublicExpireDateEnabled: CapabilityBooleanType? = null - var filesSharingPublicExpireDateDays: Int = 0 - var filesSharingPublicExpireDateEnforced: CapabilityBooleanType? = null - var filesSharingPublicSendMail: CapabilityBooleanType? = null - var filesSharingPublicUpload: CapabilityBooleanType? = null - var filesSharingPublicMultiple: CapabilityBooleanType? = null - var filesSharingPublicSupportsUploadOnly: CapabilityBooleanType? = null - - var filesSharingUserSendMail: CapabilityBooleanType? = null - - var filesSharingResharing: CapabilityBooleanType? = null - - var filesSharingFederationOutgoing: CapabilityBooleanType? = null - var filesSharingFederationIncoming: CapabilityBooleanType? = null + var filesSharingApiEnabled: CapabilityBooleanType + var filesSharingPublicEnabled: CapabilityBooleanType + var filesSharingPublicPasswordEnforced: CapabilityBooleanType + var filesSharingPublicPasswordEnforcedReadOnly: CapabilityBooleanType + var filesSharingPublicPasswordEnforcedReadWrite: CapabilityBooleanType + var filesSharingPublicPasswordEnforcedUploadOnly: CapabilityBooleanType + var filesSharingPublicExpireDateEnabled: CapabilityBooleanType + var filesSharingPublicExpireDateDays: Int + var filesSharingPublicExpireDateEnforced: CapabilityBooleanType + var filesSharingPublicSendMail: CapabilityBooleanType + var filesSharingPublicUpload: CapabilityBooleanType + var filesSharingPublicMultiple: CapabilityBooleanType + var filesSharingPublicSupportsUploadOnly: CapabilityBooleanType + var filesSharingUserSendMail: CapabilityBooleanType + var filesSharingResharing: CapabilityBooleanType + var filesSharingFederationOutgoing: CapabilityBooleanType + var filesSharingFederationIncoming: CapabilityBooleanType // Files - var filesBigFileChuncking: CapabilityBooleanType? = null - var filesUndelete: CapabilityBooleanType? = null - var filesVersioning: CapabilityBooleanType? = null + var filesBigFileChuncking: CapabilityBooleanType + var filesUndelete: CapabilityBooleanType + var filesVersioning: CapabilityBooleanType init { accountName = "" @@ -76,7 +72,7 @@ class RemoteCapability { versionMinor = 0 versionMicro = 0 versionString = "" - versionString = "" + versionEdition = "" corePollinterval = 0