diff options
author | Edoardo La Greca | 2025-06-20 02:14:45 +0200 |
---|---|---|
committer | Edoardo La Greca | 2025-06-20 02:14:45 +0200 |
commit | 8ff6d74d6ff0e713cfdff430200d8e1a820ff34a (patch) | |
tree | 70292ac8fed52341ed7a3cd6d684536434654537 /src | |
parent | 03f19a77148fb466765ad89510e8b1cd0a747a7d (diff) |
improve code quality for constructor of IPAddress
Diffstat (limited to 'src')
-rw-r--r-- | src/main/kotlin/IPAddress.kt | 18 |
1 files changed, 13 insertions, 5 deletions
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<Byte> = 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<Byte> = if (this.is4) { + split4.map { it.toByte(10) } + } else { + split6.map { it.toByte(16) } + } this.address = bytes.toTypedArray() } |