From 8ff6d74d6ff0e713cfdff430200d8e1a820ff34a Mon Sep 17 00:00:00 2001 From: Edoardo La Greca Date: Fri, 20 Jun 2025 02:14:45 +0200 Subject: improve code quality for constructor of IPAddress --- src/main/kotlin/IPAddress.kt | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'src/main/kotlin/IPAddress.kt') diff --git a/src/main/kotlin/IPAddress.kt b/src/main/kotlin/IPAddress.kt index 4d3967d..5e3cb0c 100644 --- a/src/main/kotlin/IPAddress.kt +++ b/src/main/kotlin/IPAddress.kt @@ -11,18 +11,26 @@ class IPAddress { constructor(address: String) { val split4 = address.split('.') val split6 = address.split(':') - var bytes: List = emptyList() - if (split4.size == 4) { - bytes = split4.map { it.toByte() } + val isV4 = split4.size == 4 && + split4.size == split4.filter { it.matches(Regex("^[0-9]$")) }.size + + val isV6 = split6.size == 16 && + split6.size == split6.filter { it.contains(Regex("^[0-9][a-f]$")) }.size + + if (isV4) { this.is4 = true - } else if (split6.size == 16) { - bytes = split4.map { it.toByte(16) } + } else if (isV6) { this.is4 = false } else { throw NumberFormatException() } + var bytes: List = if (this.is4) { + split4.map { it.toByte(10) } + } else { + split6.map { it.toByte(16) } + } this.address = bytes.toTypedArray() } -- cgit v1.2.3