From df19e1b39547e3e312bd2234f3fac94e46ad9fcf Mon Sep 17 00:00:00 2001 From: Nethra Ravindran Date: Sun, 20 Jan 2019 23:12:59 +0530 Subject: [PATCH 1/2] Fix for failures due to #143 --- .../KituraNet/HTTP/HTTPServerRequest.swift | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/Sources/KituraNet/HTTP/HTTPServerRequest.swift b/Sources/KituraNet/HTTP/HTTPServerRequest.swift index dd3840cb..9ee9f76f 100644 --- a/Sources/KituraNet/HTTP/HTTPServerRequest.swift +++ b/Sources/KituraNet/HTTP/HTTPServerRequest.swift @@ -46,13 +46,15 @@ public class HTTPServerRequest: ServerRequest { private var _url: URL? + private var _urlComponents: URLComponents? + public var urlURL: URL { if let _url = _url { return _url } - var url = "" - self.enableSSL ? url.append("https://") : url.append("http://") + _urlComponents = URLComponents() + _urlComponents?.scheme = self.enableSSL ? "https" : "http" var localAddress = "" var localAddressPort = UInt16(0) @@ -67,22 +69,25 @@ public class HTTPServerRequest: ServerRequest { } if let hostname = headers["Host"]?.first { - url.append(hostname) - if !hostname.contains(":") { - url.append(":") - url.append(String(describing: localAddressPort)) - } + _urlComponents?.host = hostname } else { Log.error("Host header not received") let hostname = localAddress - url.append(hostname == "127.0.0.1" ? "localhost" : hostname) - url.append(":") - url.append(String(describing: localAddressPort)) + _urlComponents?.host = hostname == "127.0.0.1" ? "localhost" : hostname + } + + _urlComponents?.port = Int(localAddressPort) + + let uriComponents = _urlString.components(separatedBy: "?") + if uriComponents.count > 0 { + _urlComponents?.path = uriComponents[0] } - url.append(_urlString) + if uriComponents.count > 1 { + _urlComponents?.percentEncodedQuery = uriComponents[1] + } - if let urlURL = URL(string: url) { + if let urlURL = _urlComponents?.url { self._url = urlURL } else { Log.error("URL init failed from: \(url)") From 9b6a8b81a23322485b40c91cf4cbe656c24e425d Mon Sep 17 00:00:00 2001 From: Nethra Ravindran Date: Mon, 21 Jan 2019 19:43:20 +0530 Subject: [PATCH 2/2] Replace NSString.components() with String.split() --- Sources/KituraNet/HTTP/HTTPServerRequest.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Sources/KituraNet/HTTP/HTTPServerRequest.swift b/Sources/KituraNet/HTTP/HTTPServerRequest.swift index 9ee9f76f..444a0bc4 100644 --- a/Sources/KituraNet/HTTP/HTTPServerRequest.swift +++ b/Sources/KituraNet/HTTP/HTTPServerRequest.swift @@ -78,13 +78,13 @@ public class HTTPServerRequest: ServerRequest { _urlComponents?.port = Int(localAddressPort) - let uriComponents = _urlString.components(separatedBy: "?") + let uriComponents = _urlString.split(separator: "?") if uriComponents.count > 0 { - _urlComponents?.path = uriComponents[0] + _urlComponents?.path = String(uriComponents[0]) } if uriComponents.count > 1 { - _urlComponents?.percentEncodedQuery = uriComponents[1] + _urlComponents?.percentEncodedQuery = String(uriComponents[1]) } if let urlURL = _urlComponents?.url {