]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
Kit: implement Codable for IPAddressRange am/codable-ipaddress-range
authorAndrej Mihajlov <and@mullvad.net>
Mon, 26 Sep 2022 14:43:17 +0000 (16:43 +0200)
committerAndrej Mihajlov <and@mullvad.net>
Mon, 26 Sep 2022 14:43:17 +0000 (16:43 +0200)
Signed-off-by: Andrej Mihajlov <and@mullvad.net>
Sources/WireGuardKit/IPAddressRange.swift

index 28a95d82ebab4bde5a6496f76523f3be1e2f9a80..20e0da904baddc487b332f98586ecac89a81a875 100644 (file)
@@ -27,6 +27,29 @@ extension IPAddressRange: Hashable {
     }
 }
 
+extension IPAddressRange: Codable {
+    public func encode(to encoder: Encoder) throws {
+        var container = encoder.singleValueContainer()
+
+        try container.encode(self.stringRepresentation)
+    }
+
+    public init(from decoder: Decoder) throws {
+        let container = try decoder.singleValueContainer()
+        let value = try container.decode(String.self)
+
+        if let ipAddressRange = IPAddressRange(from: value) {
+            self = ipAddressRange
+        } else {
+            let context = DecodingError.Context(
+                codingPath: container.codingPath,
+                debugDescription: "Invalid IPAddressRange representation"
+            )
+            throw DecodingError.dataCorrupted(context)
+        }
+    }
+}
+
 extension IPAddressRange {
     public var stringRepresentation: String {
         return "\(address)/\(networkPrefixLength)"