From 30fe861853492832e0ee941a7559ac0f385bd421 Mon Sep 17 00:00:00 2001 From: Chemaclass Date: Wed, 8 Mar 2023 12:58:28 +0100 Subject: [PATCH] Extract from Nip19 global funcs into another script --- .../vitorpamplona/amethyst/service/Nip19.kt | 27 ++----------------- .../amethyst/service/model/ATag.kt | 4 +-- .../amethyst/service/nip19/Utils.kt | 27 +++++++++++++++++++ 3 files changed, 31 insertions(+), 27 deletions(-) create mode 100644 app/src/main/java/com/vitorpamplona/amethyst/service/nip19/Utils.kt diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/Nip19.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/Nip19.kt index e2602a24d..43aa391e3 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/Nip19.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/Nip19.kt @@ -2,9 +2,9 @@ package com.vitorpamplona.amethyst.service import com.vitorpamplona.amethyst.model.toHexKey import com.vitorpamplona.amethyst.service.nip19.TlvTypes +import com.vitorpamplona.amethyst.service.nip19.parseTLV +import com.vitorpamplona.amethyst.service.nip19.toInt32 import nostr.postr.bechToBytes -import java.nio.ByteBuffer -import java.nio.ByteOrder class Nip19 { @@ -106,26 +106,3 @@ class Nip19 { return Return(Type.ADDRESS, "$kind:$author:$d", relay) } } - -fun toInt32(bytes: ByteArray): Int { - require(bytes.size == 4) { "length must be 4, got: ${bytes.size}" } - return ByteBuffer.wrap(bytes, 0, 4).order(ByteOrder.BIG_ENDIAN).int -} - -fun parseTLV(data: ByteArray): Map> { - val result = mutableMapOf>() - var rest = data - while (rest.isNotEmpty()) { - val t = rest[0] - val l = rest[1] - val v = rest.sliceArray(IntRange(2, (2 + l) - 1)) - rest = rest.sliceArray(IntRange(2 + l, rest.size - 1)) - if (v.size < l) continue - - if (!result.containsKey(t)) { - result[t] = mutableListOf() - } - result[t]?.add(v) - } - return result -} diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/ATag.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/ATag.kt index 948d3b090..08f436d7b 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/ATag.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/ATag.kt @@ -4,8 +4,8 @@ import android.util.Log import com.vitorpamplona.amethyst.model.toByteArray import com.vitorpamplona.amethyst.model.toHexKey import com.vitorpamplona.amethyst.service.nip19.TlvTypes -import com.vitorpamplona.amethyst.service.parseTLV -import com.vitorpamplona.amethyst.service.toInt32 +import com.vitorpamplona.amethyst.service.nip19.parseTLV +import com.vitorpamplona.amethyst.service.nip19.toInt32 import fr.acinq.secp256k1.Hex import nostr.postr.Bech32 import nostr.postr.bechToBytes diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/nip19/Utils.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/nip19/Utils.kt new file mode 100644 index 000000000..01f0f1c04 --- /dev/null +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/nip19/Utils.kt @@ -0,0 +1,27 @@ +package com.vitorpamplona.amethyst.service.nip19 + +import java.nio.ByteBuffer +import java.nio.ByteOrder + +fun toInt32(bytes: ByteArray): Int { + require(bytes.size == 4) { "length must be 4, got: ${bytes.size}" } + return ByteBuffer.wrap(bytes, 0, 4).order(ByteOrder.BIG_ENDIAN).int +} + +fun parseTLV(data: ByteArray): Map> { + val result = mutableMapOf>() + var rest = data + while (rest.isNotEmpty()) { + val t = rest[0] + val l = rest[1] + val v = rest.sliceArray(IntRange(2, (2 + l) - 1)) + rest = rest.sliceArray(IntRange(2 + l, rest.size - 1)) + if (v.size < l) continue + + if (!result.containsKey(t)) { + result[t] = mutableListOf() + } + result[t]?.add(v) + } + return result +}