From 42b923c3b8c5045d2ff7493b2d90ea36bd6df7f8 Mon Sep 17 00:00:00 2001 From: agarcia Date: Thu, 30 Apr 2020 13:31:32 +0200 Subject: [PATCH] Allow capabilities to be null --- .../resources/response/CapabilityResponse.kt | 112 +++++++++--------- .../lib/resources/status/RemoteCapability.kt | 4 +- 2 files changed, 58 insertions(+), 58 deletions(-) diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/response/CapabilityResponse.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/response/CapabilityResponse.kt index 22e792ad..a2dca06e 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/response/CapabilityResponse.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/response/CapabilityResponse.kt @@ -32,130 +32,130 @@ import com.squareup.moshi.JsonClass @JsonClass(generateAdapter = true) data class CapabilityResponse( @Json(name = "version") - val serverVersion: ServerVersion, - val capabilities: Capabilities + val serverVersion: ServerVersion?, + val capabilities: Capabilities? ) { fun toRemoteCapability(): RemoteCapability = RemoteCapability( - versionMayor = serverVersion.major, - versionMinor = serverVersion.minor, - versionMicro = serverVersion.micro, - versionString = serverVersion.string, - versionEdition = serverVersion.edition, - corePollinterval = capabilities.coreCapabilities.pollinterval, - filesSharingApiEnabled = CapabilityBooleanType.fromBooleanValue(capabilities.fileSharingCapabilities.fileSharingApiEnabled), - filesSharingResharing = CapabilityBooleanType.fromBooleanValue(capabilities.fileSharingCapabilities.fileSharingReSharing), - filesSharingPublicEnabled = CapabilityBooleanType.fromBooleanValue(capabilities.fileSharingCapabilities.fileSharingPublic.enabled), - filesSharingPublicUpload = CapabilityBooleanType.fromBooleanValue(capabilities.fileSharingCapabilities.fileSharingPublic.fileSharingPublicUpload), - filesSharingPublicSupportsUploadOnly = CapabilityBooleanType.fromBooleanValue(capabilities.fileSharingCapabilities.fileSharingPublic.fileSharingPublicUploadOnly), - filesSharingPublicMultiple = CapabilityBooleanType.fromBooleanValue(capabilities.fileSharingCapabilities.fileSharingPublic.fileSharingPublicMultiple), - filesSharingPublicPasswordEnforced = CapabilityBooleanType.fromBooleanValue(capabilities.fileSharingCapabilities.fileSharingPublic.fileSharingPublicPassword.enforced), + versionMayor = serverVersion?.major ?: 0, + versionMinor = serverVersion?.minor ?: 0, + versionMicro = serverVersion?.micro ?: 0, + versionString = serverVersion?.string ?: "", + versionEdition = serverVersion?.edition ?: "", + corePollinterval = capabilities?.coreCapabilities?.pollinterval ?: 0, + filesSharingApiEnabled = CapabilityBooleanType.fromBooleanValue(capabilities?.fileSharingCapabilities?.fileSharingApiEnabled), + filesSharingResharing = CapabilityBooleanType.fromBooleanValue(capabilities?.fileSharingCapabilities?.fileSharingReSharing), + filesSharingPublicEnabled = CapabilityBooleanType.fromBooleanValue(capabilities?.fileSharingCapabilities?.fileSharingPublic?.enabled), + filesSharingPublicUpload = CapabilityBooleanType.fromBooleanValue(capabilities?.fileSharingCapabilities?.fileSharingPublic?.fileSharingPublicUpload), + filesSharingPublicSupportsUploadOnly = CapabilityBooleanType.fromBooleanValue(capabilities?.fileSharingCapabilities?.fileSharingPublic?.fileSharingPublicUploadOnly), + filesSharingPublicMultiple = CapabilityBooleanType.fromBooleanValue(capabilities?.fileSharingCapabilities?.fileSharingPublic?.fileSharingPublicMultiple), + filesSharingPublicPasswordEnforced = CapabilityBooleanType.fromBooleanValue(capabilities?.fileSharingCapabilities?.fileSharingPublic?.fileSharingPublicPassword?.enforced), filesSharingPublicPasswordEnforcedReadOnly = CapabilityBooleanType.fromBooleanValue( - capabilities.fileSharingCapabilities.fileSharingPublic.fileSharingPublicPassword.enforcedFor.enforcedReadOnly + capabilities?.fileSharingCapabilities?.fileSharingPublic?.fileSharingPublicPassword?.enforcedFor?.enforcedReadOnly ), filesSharingPublicPasswordEnforcedReadWrite = CapabilityBooleanType.fromBooleanValue( - capabilities.fileSharingCapabilities.fileSharingPublic.fileSharingPublicPassword.enforcedFor.enforcedReadWrite + capabilities?.fileSharingCapabilities?.fileSharingPublic?.fileSharingPublicPassword?.enforcedFor?.enforcedReadWrite ), filesSharingPublicPasswordEnforcedUploadOnly = CapabilityBooleanType.fromBooleanValue( - capabilities.fileSharingCapabilities.fileSharingPublic.fileSharingPublicPassword.enforcedFor.enforcedUploadOnly + capabilities?.fileSharingCapabilities?.fileSharingPublic?.fileSharingPublicPassword?.enforcedFor?.enforcedUploadOnly ), - filesSharingPublicExpireDateEnabled = CapabilityBooleanType.fromBooleanValue(capabilities.fileSharingCapabilities.fileSharingPublic.fileSharingPublicExpireDate.enabled), - filesSharingPublicExpireDateDays = capabilities.fileSharingCapabilities.fileSharingPublic.fileSharingPublicExpireDate.days + filesSharingPublicExpireDateEnabled = CapabilityBooleanType.fromBooleanValue(capabilities?.fileSharingCapabilities?.fileSharingPublic?.fileSharingPublicExpireDate?.enabled), + filesSharingPublicExpireDateDays = capabilities?.fileSharingCapabilities?.fileSharingPublic?.fileSharingPublicExpireDate?.days ?: 0, filesSharingPublicExpireDateEnforced = CapabilityBooleanType.fromBooleanValue( - capabilities.fileSharingCapabilities.fileSharingPublic.fileSharingPublicExpireDate.enforced ?: false + capabilities?.fileSharingCapabilities?.fileSharingPublic?.fileSharingPublicExpireDate?.enforced ), - filesBigFileChunking = CapabilityBooleanType.fromBooleanValue(capabilities.fileCapabilities.bigfilechunking), - filesUndelete = CapabilityBooleanType.fromBooleanValue(capabilities.fileCapabilities.undelete), - filesVersioning = CapabilityBooleanType.fromBooleanValue(capabilities.fileCapabilities.versioning), - filesSharingFederationIncoming = CapabilityBooleanType.fromBooleanValue(capabilities.fileSharingCapabilities.fileSharingFederation.incoming), - filesSharingFederationOutgoing = CapabilityBooleanType.fromBooleanValue(capabilities.fileSharingCapabilities.fileSharingFederation.outgoing) + filesBigFileChunking = CapabilityBooleanType.fromBooleanValue(capabilities?.fileCapabilities?.bigfilechunking), + filesUndelete = CapabilityBooleanType.fromBooleanValue(capabilities?.fileCapabilities?.undelete), + filesVersioning = CapabilityBooleanType.fromBooleanValue(capabilities?.fileCapabilities?.versioning), + filesSharingFederationIncoming = CapabilityBooleanType.fromBooleanValue(capabilities?.fileSharingCapabilities?.fileSharingFederation?.incoming), + filesSharingFederationOutgoing = CapabilityBooleanType.fromBooleanValue(capabilities?.fileSharingCapabilities?.fileSharingFederation?.outgoing) ) } @JsonClass(generateAdapter = true) data class Capabilities( @Json(name = "core") - val coreCapabilities: CoreCapabilities, + val coreCapabilities: CoreCapabilities?, @Json(name = "files_sharing") - val fileSharingCapabilities: FileSharingCapabilities, + val fileSharingCapabilities: FileSharingCapabilities?, @Json(name = "files") - val fileCapabilities: FileCapabilities + val fileCapabilities: FileCapabilities? ) @JsonClass(generateAdapter = true) data class CoreCapabilities( - val pollinterval: Int + val pollinterval: Int? ) @JsonClass(generateAdapter = true) data class FileSharingCapabilities( @Json(name = "api_enabled") - val fileSharingApiEnabled: Boolean, + val fileSharingApiEnabled: Boolean?, @Json(name = "public") - val fileSharingPublic: FileSharingPublic, + val fileSharingPublic: FileSharingPublic?, @Json(name = "resharing") - val fileSharingReSharing: Boolean, + val fileSharingReSharing: Boolean?, @Json(name = "federation") - val fileSharingFederation: FileSharingFederation + val fileSharingFederation: FileSharingFederation? ) @JsonClass(generateAdapter = true) data class FileSharingPublic( - val enabled: Boolean, + val enabled: Boolean?, @Json(name = "upload") - val fileSharingPublicUpload: Boolean, + val fileSharingPublicUpload: Boolean?, @Json(name = "supports_upload_only") - val fileSharingPublicUploadOnly: Boolean, + val fileSharingPublicUploadOnly: Boolean?, @Json(name = "multiple") - val fileSharingPublicMultiple: Boolean, + val fileSharingPublicMultiple: Boolean?, @Json(name = "password") - val fileSharingPublicPassword: FileSharingPublicPassword, + val fileSharingPublicPassword: FileSharingPublicPassword?, @Json(name = "expire_date") - val fileSharingPublicExpireDate: FileSharingPublicExpireDate + val fileSharingPublicExpireDate: FileSharingPublicExpireDate? ) @JsonClass(generateAdapter = true) data class FileSharingPublicPassword( - val enforced: Boolean, + val enforced: Boolean?, @Json(name = "enforced_for") - val enforcedFor: FileSharingPublicPasswordEnforced + val enforcedFor: FileSharingPublicPasswordEnforced? ) @JsonClass(generateAdapter = true) data class FileSharingPublicPasswordEnforced( @Json(name = "read_only") - val enforcedReadOnly: Boolean, + val enforcedReadOnly: Boolean?, @Json(name = "read_write") - val enforcedReadWrite: Boolean, + val enforcedReadWrite: Boolean?, @Json(name = "upload_only") - val enforcedUploadOnly: Boolean + val enforcedUploadOnly: Boolean? ) @JsonClass(generateAdapter = true) data class FileSharingPublicExpireDate( - val enabled: Boolean, + val enabled: Boolean?, val days: Int?, val enforced: Boolean? ) @JsonClass(generateAdapter = true) data class FileSharingFederation( - val incoming: Boolean, - val outgoing: Boolean + val incoming: Boolean?, + val outgoing: Boolean? ) @JsonClass(generateAdapter = true) data class FileCapabilities( - val bigfilechunking: Boolean, - val undelete: Boolean, - val versioning: Boolean + val bigfilechunking: Boolean?, + val undelete: Boolean?, + val versioning: Boolean? ) @JsonClass(generateAdapter = true) data class ServerVersion( - var major: Int = 0, - var minor: Int = 0, - var micro: Int = 0, - var string: String = "", - var edition: String = "" + var major: Int?, + var minor: Int?, + var micro: Int?, + var string: String?, + var edition: String? ) 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 93880c3f..5dd0988f 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 @@ -87,8 +87,8 @@ data class RemoteCapability( } } - fun fromBooleanValue(boolValue: Boolean): CapabilityBooleanType { - return if (boolValue) { + fun fromBooleanValue(boolValue: Boolean?): CapabilityBooleanType { + return if (boolValue != null && boolValue) { TRUE } else { FALSE