Updated on 2026-08-14

This commit is contained in:
Tangem 2022-10-06 16:20:24 +05:00
parent 8e552d9ed3
commit 77d6364cbe

View file

@ -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.")
}
}