summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorEdoardo La Greca2025-06-20 02:14:45 +0200
committerEdoardo La Greca2025-06-20 02:14:45 +0200
commit8ff6d74d6ff0e713cfdff430200d8e1a820ff34a (patch)
tree70292ac8fed52341ed7a3cd6d684536434654537 /src/main
parent03f19a77148fb466765ad89510e8b1cd0a747a7d (diff)
improve code quality for constructor of IPAddress
Diffstat (limited to 'src/main')
-rw-r--r--src/main/kotlin/IPAddress.kt18
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()
}