From 77d6364cbe2cc35cd57c71ccecd37babfa76b200 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 6 Oct 2022 16:20:24 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../tangem/domain/common/card/CardIdRange.kt | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 domain/src/main/java/com/tangem/domain/common/card/CardIdRange.kt diff --git a/domain/src/main/java/com/tangem/domain/common/card/CardIdRange.kt b/domain/src/main/java/com/tangem/domain/common/card/CardIdRange.kt new file mode 100644 index 0000000000..696050068f --- /dev/null +++ b/domain/src/main/java/com/tangem/domain/common/card/CardIdRange.kt @@ -0,0 +1,36 @@ +package com.tangem.domain.common.card + +import timber.log.Timber + +/** +[REDACTED_AUTHOR] + */ +class CardIdRange( + val cardIdStart: String, + val cardIdEnd: String, +) { + val range: LongRange + + init { + checkCardId(cardIdStart) + checkCardId(cardIdEnd) + range = toLong(cardIdStart)..toLong(cardIdEnd) + } + + fun contains(cardId: String): Boolean = try { + checkCardId(cardId) + range.contains(toLong(cardId)) + } catch (ex: Exception) { + Timber.e(ex, "CardIdRange: check for the cardId: [$cardId] in range failed.") + false + } + + private fun stripBatchPrefix(cardId: String): String = cardId.drop(4) + + @Throws(NumberFormatException::class) + private fun toLong(cardId: String): Long = stripBatchPrefix(cardId).toLong() + + private fun checkCardId(cardId: String) { + if (cardId.length != 16) throw IllegalArgumentException("CardId must be 16 characters long.") + } +} \ No newline at end of file