Skip to content

Commit b67b6ab

Browse files
committed
engine polling to nsurl
1 parent d912796 commit b67b6ab

File tree

3 files changed

+26
-37
lines changed

3 files changed

+26
-37
lines changed

Source/SocketEngine.swift

Lines changed: 16 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public final class SocketEngine: NSObject, SocketEnginePollable, SocketEngineWeb
4747
public private(set) var session: NSURLSession?
4848
public private(set) var sid = ""
4949
public private(set) var socketPath = "/engine.io/"
50-
public private(set) var urlPolling = ""
50+
public private(set) var urlPolling = NSURL()
5151
public private(set) var urlWebSocket = NSURL()
5252
public private(set) var websocket = false
5353
public private(set) var ws: WebSocket?
@@ -199,56 +199,38 @@ public final class SocketEngine: NSObject, SocketEnginePollable, SocketEngineWeb
199199
}
200200
}
201201

202-
private func createURLs(params: [String: AnyObject]?) -> (String, NSURL) {
202+
private func createURLs(params: [String: AnyObject]?) -> (NSURL, NSURL) {
203203
if client == nil {
204-
return ("", NSURL())
204+
return (NSURL(), NSURL())
205205
}
206206

207-
let absURL = url.absoluteString["https?://"] <~ ""
208-
let baseURL: String
209-
210-
if absURL.hasSuffix("/") {
211-
baseURL = String(absURL.characters.dropLast())
212-
} else {
213-
baseURL = absURL
214-
}
215-
216-
let socketURL = "\(baseURL)\(socketPath)/?transport="
217-
var urlPolling: String
218-
var queryString = "transport=websocket"
207+
let urlPolling = NSURLComponents(string: url.absoluteString)!
219208
let urlWebSocket = NSURLComponents(string: url.absoluteString)!
209+
var queryString = ""
220210

221211
urlWebSocket.path = socketPath
212+
urlPolling.path = socketPath
213+
urlWebSocket.query = "transport=websocket"
214+
urlPolling.query = "transport=polling&b64=1"
222215

223216
if secure {
224-
urlPolling = "https://" + socketURL + "polling"
217+
urlPolling.scheme = "https"
225218
urlWebSocket.scheme = "wss"
226219
} else {
227-
urlPolling = "http://" + socketURL + "polling"
220+
urlPolling.scheme = "http"
228221
urlWebSocket.scheme = "ws"
229222
}
230223

231224
if params != nil {
232225
for (key, value) in params! {
233-
let keyEsc = key.stringByAddingPercentEncodingWithAllowedCharacters(
234-
allowedCharacterSet)!
235-
urlPolling += "&\(keyEsc)="
236-
queryString += "&\(keyEsc)="
237-
238-
if value is String {
239-
let valueEsc = (value as! String).stringByAddingPercentEncodingWithAllowedCharacters(
240-
allowedCharacterSet)!
241-
urlPolling += String(valueEsc)
242-
queryString += String(value)
243-
} else {
244-
urlPolling += String(value)
245-
queryString += String(value)
246-
}
226+
queryString += "&\(key)=\(value)"
247227
}
248228
}
249229

250-
urlWebSocket.query = queryString
251-
return (urlPolling, urlWebSocket.URL!)
230+
urlWebSocket.query = urlWebSocket.query! + queryString
231+
urlPolling.query = urlPolling.query! + queryString
232+
233+
return (urlPolling.URL!, urlWebSocket.URL!)
252234
}
253235

254236
private func createWebsocketAndConnect() {
@@ -411,7 +393,7 @@ public final class SocketEngine: NSObject, SocketEnginePollable, SocketEngineWeb
411393
return
412394
}
413395

414-
let reqPolling = NSMutableURLRequest(URL: NSURL(string: urlPolling + "&b64=1")!)
396+
let reqPolling = NSMutableURLRequest(URL: urlPolling)
415397

416398
if cookies != nil {
417399
let headers = NSHTTPCookie.requestHeaderFieldsWithCookies(cookies!)

Source/SocketEnginePollable.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ extension SocketEnginePollable {
7171

7272
postWait.removeAll(keepCapacity: false)
7373

74-
let req = NSMutableURLRequest(URL: NSURL(string: urlPolling + "&sid=\(sid)")!)
74+
let req = NSMutableURLRequest(URL: urlPollingWithSid)
7575

7676
addHeaders(req)
7777

@@ -93,7 +93,7 @@ extension SocketEnginePollable {
9393
}
9494

9595
waitingForPoll = true
96-
let req = NSMutableURLRequest(URL: NSURL(string: urlPolling + "&sid=\(sid)&b64=1")!)
96+
let req = NSMutableURLRequest(URL: urlPollingWithSid)
9797

9898
addHeaders(req)
9999
doLongPoll(req)

Source/SocketEngineSpec.swift

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ import Foundation
4242
var handleQueue: dispatch_queue_t! { get }
4343
var sid: String { get }
4444
var socketPath: String { get }
45-
var urlPolling: String { get }
45+
var urlPolling: NSURL { get }
4646
var urlWebSocket: NSURL { get }
4747
var websocket: Bool { get }
4848

@@ -59,6 +59,13 @@ import Foundation
5959
}
6060

6161
extension SocketEngineSpec {
62+
var urlPollingWithSid: NSURL {
63+
let com = NSURLComponents(URL: urlPolling, resolvingAgainstBaseURL: false)!
64+
com.query = com.query! + "&sid=\(sid)"
65+
66+
return com.URL!
67+
}
68+
6269
func createBinaryDataForSend(data: NSData) -> Either<NSData, String> {
6370
if websocket {
6471
var byteArray = [UInt8](count: 1, repeatedValue: 0x4)

0 commit comments

Comments
 (0)