diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip70ProtectedEvts/EventExt.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip70ProtectedEvts/EventExt.kt index 11ceb0b5aa..62fe0ab620 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip70ProtectedEvts/EventExt.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip70ProtectedEvts/EventExt.kt @@ -22,6 +22,4 @@ package com.vitorpamplona.quartz.nip70ProtectedEvts import com.vitorpamplona.quartz.nip01Core.core.Event -const val PROTECTED_TAG = "-" - -fun Event.isProtected() = tags.any { (it.size > 0 && it[0] == PROTECTED_TAG) } +fun Event.isProtected() = tags.isProtected() diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip70ProtectedEvts/TagArrayBuilderExt.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip70ProtectedEvts/TagArrayBuilderExt.kt new file mode 100644 index 0000000000..3f820f5538 --- /dev/null +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip70ProtectedEvts/TagArrayBuilderExt.kt @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2024 Vitor Pamplona + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package com.vitorpamplona.quartz.nip70ProtectedEvts + +import com.vitorpamplona.quartz.nip01Core.core.Event +import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder +import com.vitorpamplona.quartz.nip70ProtectedEvts.tags.ProtectedTag + +fun TagArrayBuilder.protect() = addUnique(ProtectedTag.assemble()) diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip70ProtectedEvts/TagArrayExt.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip70ProtectedEvts/TagArrayExt.kt new file mode 100644 index 0000000000..27260e8b1e --- /dev/null +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip70ProtectedEvts/TagArrayExt.kt @@ -0,0 +1,26 @@ +/** + * Copyright (c) 2024 Vitor Pamplona + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package com.vitorpamplona.quartz.nip70ProtectedEvts + +import com.vitorpamplona.quartz.nip01Core.core.TagArray +import com.vitorpamplona.quartz.nip70ProtectedEvts.tags.ProtectedTag + +fun TagArray.isProtected() = any(ProtectedTag::match) diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip70ProtectedEvts/tags/ProtectedTag.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip70ProtectedEvts/tags/ProtectedTag.kt new file mode 100644 index 0000000000..c9027d9dcb --- /dev/null +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip70ProtectedEvts/tags/ProtectedTag.kt @@ -0,0 +1,47 @@ +/** + * Copyright (c) 2024 Vitor Pamplona + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package com.vitorpamplona.quartz.nip70ProtectedEvts.tags + +import com.vitorpamplona.quartz.nip01Core.core.has +import com.vitorpamplona.quartz.utils.ensure + +class ProtectedTag { + companion object { + const val TAG_NAME = "-" + + @JvmStatic + fun match(tag: Array): Boolean { + ensure(tag.has(0)) { return false } + ensure(tag[0] == TAG_NAME) { return false } + return true + } + + @JvmStatic + fun parse(tag: Array): Boolean? { + ensure(tag.has(0)) { return null } + ensure(tag[0] == TAG_NAME) { return null } + return true + } + + @JvmStatic + fun assemble() = arrayOf(TAG_NAME) + } +}