mirror of https://github.com/tasks/tasks
Add OCInvite property
parent
4e36ddcd74
commit
6619a8f3fa
@ -0,0 +1,41 @@
|
|||||||
|
package org.tasks.caldav.property
|
||||||
|
|
||||||
|
import at.bitfire.dav4jvm.Property
|
||||||
|
import at.bitfire.dav4jvm.XmlUtils.propertyName
|
||||||
|
import org.tasks.BuildConfig
|
||||||
|
import org.tasks.caldav.property.PropertyUtils.NS_OWNCLOUD
|
||||||
|
import org.xmlpull.v1.XmlPullParser
|
||||||
|
|
||||||
|
class OCAccess(parser: XmlPullParser) : Property {
|
||||||
|
|
||||||
|
lateinit var access: Property.Name
|
||||||
|
private set
|
||||||
|
|
||||||
|
init {
|
||||||
|
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 (val name = parser.propertyName()) {
|
||||||
|
SHARED_OWNER, READ_WRITE, NOT_SHARED, READ -> access = name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
eventType = parser.next()
|
||||||
|
}
|
||||||
|
if (BuildConfig.DEBUG && parser.depth != depth) {
|
||||||
|
error("Assertion failed")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun toString(): String {
|
||||||
|
return "OCAccess(access=$access)"
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val ACCESS = Property.Name(NS_OWNCLOUD, "access")
|
||||||
|
val SHARED_OWNER = Property.Name(NS_OWNCLOUD, "shared-owner")
|
||||||
|
val READ_WRITE = Property.Name(NS_OWNCLOUD, "read-write")
|
||||||
|
val NOT_SHARED = Property.Name(NS_OWNCLOUD, "not-shared")
|
||||||
|
val READ = Property.Name(NS_OWNCLOUD, "read")
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,39 @@
|
|||||||
|
package org.tasks.caldav.property
|
||||||
|
|
||||||
|
import at.bitfire.dav4jvm.Property
|
||||||
|
import at.bitfire.dav4jvm.PropertyFactory
|
||||||
|
import at.bitfire.dav4jvm.XmlUtils.propertyName
|
||||||
|
import org.tasks.BuildConfig
|
||||||
|
import org.tasks.caldav.property.PropertyUtils.NS_OWNCLOUD
|
||||||
|
import org.xmlpull.v1.XmlPullParser
|
||||||
|
|
||||||
|
data class OCInvite(val users: List<OCUser>): Property {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
@JvmField
|
||||||
|
val NAME = Property.Name(NS_OWNCLOUD, "invite")
|
||||||
|
|
||||||
|
val USER = Property.Name(NS_OWNCLOUD, "user")
|
||||||
|
}
|
||||||
|
|
||||||
|
class Factory : PropertyFactory {
|
||||||
|
|
||||||
|
override fun getName() = NAME
|
||||||
|
|
||||||
|
override fun create(parser: XmlPullParser): OCInvite {
|
||||||
|
val depth = parser.depth
|
||||||
|
var eventType = parser.eventType
|
||||||
|
val users = ArrayList<OCUser>()
|
||||||
|
while (!(eventType == XmlPullParser.END_TAG && parser.depth == depth)) {
|
||||||
|
if (eventType == XmlPullParser.START_TAG && parser.depth == depth + 1) {
|
||||||
|
if (parser.propertyName() == USER) {
|
||||||
|
users.add(OCUser(parser))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
eventType = parser.next()
|
||||||
|
}
|
||||||
|
if (BuildConfig.DEBUG && parser.depth != depth) { error("Assertion failed") }
|
||||||
|
return OCInvite(users)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
package org.tasks.caldav.property
|
||||||
|
|
||||||
|
import at.bitfire.dav4jvm.DavResource
|
||||||
|
import at.bitfire.dav4jvm.Property
|
||||||
|
import at.bitfire.dav4jvm.XmlUtils
|
||||||
|
import at.bitfire.dav4jvm.XmlUtils.propertyName
|
||||||
|
import org.tasks.BuildConfig
|
||||||
|
import org.tasks.caldav.property.PropertyUtils.NS_OWNCLOUD
|
||||||
|
import org.xmlpull.v1.XmlPullParser
|
||||||
|
|
||||||
|
class OCUser(parser: XmlPullParser) {
|
||||||
|
lateinit var href: String
|
||||||
|
private set
|
||||||
|
lateinit var commonName: String
|
||||||
|
private set
|
||||||
|
lateinit var access: OCAccess
|
||||||
|
private set
|
||||||
|
lateinit var response: Property.Name
|
||||||
|
private set
|
||||||
|
|
||||||
|
init {
|
||||||
|
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 (val name = parser.propertyName()) {
|
||||||
|
DavResource.HREF ->
|
||||||
|
XmlUtils.readText(parser)?.let { href = it }
|
||||||
|
COMMON_NAME ->
|
||||||
|
XmlUtils.readText(parser)?.let { commonName = it }
|
||||||
|
OCAccess.ACCESS ->
|
||||||
|
access = OCAccess(parser)
|
||||||
|
INVITE_ACCEPTED, INVITE_DECLINED, INVITE_NORESPONSE, INVITE_INVALID ->
|
||||||
|
response = name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
eventType = parser.next()
|
||||||
|
}
|
||||||
|
if (BuildConfig.DEBUG && parser.depth != depth) { error("Assertion failed") }
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val COMMON_NAME = Property.Name(NS_OWNCLOUD, "common-name")
|
||||||
|
val INVITE_ACCEPTED = Property.Name(NS_OWNCLOUD, "invite-accepted")
|
||||||
|
val INVITE_DECLINED = Property.Name(NS_OWNCLOUD, "invite-declined")
|
||||||
|
val INVITE_NORESPONSE = Property.Name(NS_OWNCLOUD, "invite-noresponse")
|
||||||
|
val INVITE_INVALID = Property.Name(NS_OWNCLOUD, "invite-invalid")
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,51 @@
|
|||||||
|
package org.tasks.caldav.property
|
||||||
|
|
||||||
|
import at.bitfire.dav4jvm.PropertyRegistry
|
||||||
|
import org.junit.Assert.assertEquals
|
||||||
|
import org.junit.Assert.assertTrue
|
||||||
|
import org.junit.Before
|
||||||
|
import org.junit.Test
|
||||||
|
import org.tasks.caldav.property.PropertyUtils.NS_OWNCLOUD
|
||||||
|
import org.tasks.caldav.property.TestPropertyUtils.toProperty
|
||||||
|
|
||||||
|
class OCInviteTest {
|
||||||
|
@Before
|
||||||
|
fun setUp() {
|
||||||
|
PropertyRegistry.register(OCInvite.Factory())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun emptyInvite() =
|
||||||
|
assertTrue("<oc:invite />".toProperty<OCInvite>("oc" to NS_OWNCLOUD).users.isEmpty())
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun userHref() =
|
||||||
|
assertEquals("principal:principals/users/testuser", user(SHARED_USER).href)
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun commonName() = assertEquals("testuser", user(SHARED_USER).commonName)
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun access() = assertEquals(OCAccess.READ_WRITE, user(SHARED_USER).access.access)
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun response() = assertEquals(OCUser.INVITE_ACCEPTED, user(SHARED_USER).response)
|
||||||
|
|
||||||
|
private fun user(xml: String) =
|
||||||
|
xml.toProperty<OCInvite>("oc" to NS_OWNCLOUD).users.first()
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private val SHARED_USER = """
|
||||||
|
<oc:invite>
|
||||||
|
<oc:user>
|
||||||
|
<d:href>principal:principals/users/testuser</d:href>
|
||||||
|
<oc:common-name>testuser</oc:common-name>
|
||||||
|
<oc:invite-accepted />
|
||||||
|
<oc:access>
|
||||||
|
<oc:read-write />
|
||||||
|
</oc:access>
|
||||||
|
</oc:user>
|
||||||
|
</oc:invite>
|
||||||
|
""".trimIndent()
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue