From 5a7e67b53c4cd81558e5faf0b287584db3ec208d Mon Sep 17 00:00:00 2001 From: Jeroen Leenarts Date: Thu, 16 Aug 2018 22:41:45 +0200 Subject: Extend validators to work for DNS entries as well. Signed-off-by: Jason A. Donenfeld --- Shared/Validators.swift | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) (limited to 'Shared/Validators.swift') diff --git a/Shared/Validators.swift b/Shared/Validators.swift index f065f0e..0b95587 100644 --- a/Shared/Validators.swift +++ b/Shared/Validators.swift @@ -31,20 +31,28 @@ public enum EndpointValidationError: Error { struct Endpoint { var ipAddress: String - var port: Int32 + var port: Int32? var addressType: AddressType - init?(endpointString: String) throws { - guard let range = endpointString.range(of: ":", options: .backwards, range: nil, locale: nil) else { - throw EndpointValidationError.noIpAndPort(endpointString) + init?(endpointString: String, needsPort: Bool = true) throws { + var ipString: String + if needsPort { + guard let range = endpointString.range(of: ":", options: .backwards, range: nil, locale: nil) else { + throw EndpointValidationError.noIpAndPort(endpointString) + } + ipString = String(endpointString[.. 0 else { + throw EndpointValidationError.invalidPort(String(portString/*parts[1]*/)) + } + self.port = port + } else { + ipString = endpointString } - let ipString = endpointString[.. 0 else { - throw EndpointValidationError.invalidPort(String(portString/*parts[1]*/)) - } + ipString = ipString.replacingOccurrences(of: "[", with: "").replacingOccurrences(of: "]", with: "") ipAddress = String(ipString) let addressType = validateIpAddress(ipToValidate: ipAddress) @@ -52,8 +60,6 @@ struct Endpoint { throw EndpointValidationError.invalidIP(ipAddress) } self.addressType = addressType - - self.port = port } } -- cgit v1.2.3-59-g8ed1b