Skip to content

Commit

Permalink
Made all properties data classes to comply with #61
Browse files Browse the repository at this point in the history
Signed-off-by: Arnau Mora Gras <[email protected]>
  • Loading branch information
ArnyminerZ committed Dec 2, 2024
1 parent 4cf89db commit b0f7adf
Show file tree
Hide file tree
Showing 11 changed files with 54 additions and 50 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ import org.xmlpull.v1.XmlPullParser
*
* Experimental! See https://github.com/bitfireAT/webdav-push/
*/
class AuthSecret private constructor(
val secret: String?
data class AuthSecret(
val secret: String? = null
): Property {

companion object {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@ import org.xmlpull.v1.XmlPullParser
*
* Experimental! See https://github.com/bitfireAT/webdav-push/
*/
class ClientPublicKey: PushPublicKey() {
data class ClientPublicKey(
override val type: String? = null,
override val key: String? = null
): PushPublicKey(type, key) {

companion object {

Expand All @@ -25,12 +28,10 @@ class ClientPublicKey: PushPublicKey() {
override fun getName() = NAME

override fun create(parser: XmlPullParser): ClientPublicKey {
val publicKey = ClientPublicKey()

publicKey.type = parser.getAttributeValue(null, "type")
publicKey.key = XmlReader(parser).readText()

return publicKey
return ClientPublicKey(
type = parser.getAttributeValue(null, "type"),
key = XmlReader(parser).readText()
)
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ import org.xmlpull.v1.XmlPullParser
*
* Experimental! See https://github.com/bitfireAT/webdav-push/
*/
class PushMessage(
val propStat: PropStat?
data class PushMessage(
val propStat: PropStat? = null
): Property {

companion object {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,10 @@ import at.bitfire.dav4jvm.Property
* @see ClientPublicKey
* @see ServerPublicKey
*/
abstract class PushPublicKey: Property {

var type: String? = null
var key: String? = null

abstract class PushPublicKey(
open val type: String? = null,
open val key: String? = null
): Property {

override fun equals(other: Any?): Boolean {
if (this === other) return true
Expand Down
24 changes: 14 additions & 10 deletions src/main/kotlin/at/bitfire/dav4jvm/property/push/PushRegister.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,18 @@ import at.bitfire.dav4jvm.Property
import at.bitfire.dav4jvm.PropertyFactory
import at.bitfire.dav4jvm.XmlReader
import at.bitfire.dav4jvm.XmlUtils.propertyName
import org.xmlpull.v1.XmlPullParser
import java.time.Instant
import org.xmlpull.v1.XmlPullParser

/**
* Represents a [NS_WEBDAV_PUSH]`:push-register` property.
*
* Experimental! See https://github.com/bitfireAT/webdav-push/
*/
class PushRegister: Property {
data class PushRegister(
val expires: Instant? = null,
val subscription: Subscription? = null
): Property {

companion object {

Expand All @@ -30,28 +33,29 @@ class PushRegister: Property {

}

var expires: Instant? = null
var subscription: Subscription? = null


object Factory: PropertyFactory {

override fun getName() = NAME

override fun create(parser: XmlPullParser): PushRegister {
val register = PushRegister()
var register = PushRegister()

val depth = parser.depth
var eventType = parser.eventType
while (!(eventType == XmlPullParser.END_TAG && parser.depth == depth)) {
if (eventType == XmlPullParser.START_TAG && parser.depth == depth + 1)
when (parser.propertyName()) {
EXPIRES ->
register.expires = XmlReader(parser).readText()?.let {
HttpUtils.parseDate(it)
}
register = register.copy(
expires = XmlReader(parser).readText()?.let {
HttpUtils.parseDate(it)
}
)
Subscription.NAME ->
register.subscription = Subscription.Factory.create(parser)
register = register.copy(
subscription = Subscription.Factory.create(parser)
)
}
eventType = parser.next()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ import org.xmlpull.v1.XmlPullParser
*
* Experimental! See https://github.com/bitfireAT/webdav-push/
*/
class PushResource private constructor(
val uri: URI?
data class PushResource(
val uri: URI? = null
): Property {

companion object {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@ import org.xmlpull.v1.XmlPullParser
*
* Experimental! See https://github.com/bitfireAT/webdav-push/
*/
class ServerPublicKey: PushPublicKey() {
data class ServerPublicKey(
override val type: String? = null,
override val key: String? = null
): PushPublicKey(type, key) {

companion object {

Expand All @@ -25,12 +28,10 @@ class ServerPublicKey: PushPublicKey() {
override fun getName() = NAME

override fun create(parser: XmlPullParser): ServerPublicKey {
val publicKey = ServerPublicKey()

publicKey.type = parser.getAttributeValue(null, "type")
publicKey.key = XmlReader(parser).readText()

return publicKey
return ServerPublicKey(
type = parser.getAttributeValue(null, "type"),
key = XmlReader(parser).readText()
)
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ import org.xmlpull.v1.XmlPullParser
*
* Experimental! See https://github.com/bitfireAT/webdav-push/
*/
class Subscription private constructor(
val webPushSubscription: WebPushSubscription?
data class Subscription private constructor(
val webPushSubscription: WebPushSubscription? = null
): Property {

companion object {
Expand Down
4 changes: 2 additions & 2 deletions src/main/kotlin/at/bitfire/dav4jvm/property/push/Topic.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ import org.xmlpull.v1.XmlPullParser
*
* Experimental! See https://github.com/bitfireAT/webdav-push/
*/
class Topic private constructor(
val topic: String?
data class Topic(
val topic: String? = null
): Property {

companion object {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import org.xmlpull.v1.XmlPullParser
* Experimental! See https://github.com/bitfireAT/webdav-push/
*/
data class WebPush(
val serverPublicKey: ServerPublicKey?
val serverPublicKey: ServerPublicKey? = null
): PushTransport {

companion object {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ package at.bitfire.dav4jvm.property.push

import at.bitfire.dav4jvm.Property
import at.bitfire.dav4jvm.PropertyFactory
import at.bitfire.dav4jvm.XmlReader
import at.bitfire.dav4jvm.XmlUtils.propertyName
import org.xmlpull.v1.XmlPullParser

Expand All @@ -17,7 +16,11 @@ import org.xmlpull.v1.XmlPullParser
*
* Experimental! See https://github.com/bitfireAT/webdav-push/
*/
class WebPushSubscription: Property {
data class WebPushSubscription(
val pushResource: PushResource? = null,
val clientPublicKey: ClientPublicKey? = null,
val authSecret: AuthSecret? = null
): Property {

companion object {

Expand All @@ -26,26 +29,22 @@ class WebPushSubscription: Property {

}

var pushResource: PushResource? = null
var clientPublicKey: ClientPublicKey? = null
var authSecret: AuthSecret? = null


object Factory: PropertyFactory {

override fun getName() = NAME

override fun create(parser: XmlPullParser): WebPushSubscription {
val subscription = WebPushSubscription()
var subscription = WebPushSubscription()

val depth = parser.depth
var eventType = parser.eventType
while (!(eventType == XmlPullParser.END_TAG && parser.depth == depth)) {
if (eventType == XmlPullParser.START_TAG && parser.depth == depth + 1) {
when (parser.propertyName()) {
PushResource.NAME -> subscription.pushResource = PushResource.Factory.create(parser)
ClientPublicKey.NAME -> subscription.clientPublicKey = ClientPublicKey.Factory.create(parser)
AuthSecret.NAME -> subscription.authSecret = AuthSecret.Factory.create(parser)
PushResource.NAME -> subscription = subscription.copy(pushResource = PushResource.Factory.create(parser))
ClientPublicKey.NAME -> subscription = subscription.copy(clientPublicKey = ClientPublicKey.Factory.create(parser))
AuthSecret.NAME -> subscription = subscription.copy(authSecret = AuthSecret.Factory.create(parser))
}
}
eventType = parser.next()
Expand Down

0 comments on commit b0f7adf

Please sign in to comment.