diff --git a/Source/SocketEngine.swift b/Source/SocketEngine.swift index 94aec48..3b2b333 100644 --- a/Source/SocketEngine.swift +++ b/Source/SocketEngine.swift @@ -147,13 +147,12 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate { } } - private func checkIfMessageIsBase64Binary(var message: String) -> Bool { + private func checkIfMessageIsBase64Binary(message: String) -> Bool { if message.hasPrefix("b4") { // binary in base64 string - message.removeRange(Range(start: message.startIndex, - end: message.startIndex.advancedBy(2))) + let noPrefix = message[message.startIndex.advancedBy(2).. String { + if let utf8 = string.dataUsingEncoding(NSISOLatin1StringEncoding), latin1 = NSString(data: utf8, encoding: NSUTF8StringEncoding) { - name = latin1 as String + return latin1 as String + } else { + return string } } -func doubleEncodeUTF8(inout str: String) { - if let latin1 = str.dataUsingEncoding(NSUTF8StringEncoding), +func doubleEncodeUTF8(string: String) -> String { + if let latin1 = string.dataUsingEncoding(NSUTF8StringEncoding), utf8 = NSString(data: latin1, encoding: NSISOLatin1StringEncoding) { - str = utf8 as String + return utf8 as String + } else { + return string } } diff --git a/Source/SocketPacket.swift b/Source/SocketPacket.swift index 3a565bc..fda62df 100644 --- a/Source/SocketPacket.swift +++ b/Source/SocketPacket.swift @@ -95,7 +95,9 @@ struct SocketPacket { } } - private func completeMessage(var message: String, ack: Bool) -> String { + private func completeMessage(message: String, ack: Bool) -> String { + var restOfMessage = "" + if data.count == 0 { return message + "]" } @@ -107,28 +109,25 @@ struct SocketPacket { options: NSJSONWritingOptions(rawValue: 0)) let jsonString = NSString(data: jsonSend, encoding: NSUTF8StringEncoding) - message += jsonString! as String + "," + restOfMessage += jsonString! as String + "," } catch { DefaultSocketLogger.Logger.error("Error creating JSON object in SocketPacket.completeMessage", type: SocketPacket.logType) } - } else if var str = arg as? String { - str = str["\n"] ~= "\\\\n" - str = str["\r"] ~= "\\\\r" - - message += "\"\(str)\"," + } else if let str = arg as? String { + restOfMessage += "\"\((str["\n"] ~= "\\\\n")["\r"] ~= "\\\\r")\"," } else if arg is NSNull { - message += "null," + restOfMessage += "null," } else { - message += "\(arg)," + restOfMessage += "\(arg)," } } - if message != "" { - message.removeAtIndex(message.endIndex.predecessor()) + if restOfMessage != "" { + restOfMessage.removeAtIndex(restOfMessage.endIndex.predecessor()) } - return message + "]" + return message + restOfMessage + "]" } private func createAck() -> String { @@ -191,7 +190,7 @@ struct SocketPacket { private func createPacketString() -> String { let str: String - if type == PacketType.Event || type == PacketType.BinaryEvent { + if type == .Event || type == .BinaryEvent { str = createMessageForEvent() } else { str = createAck() @@ -226,14 +225,8 @@ struct SocketPacket { } return newDict - } else if let arr = data as? NSArray { - let newArr = NSMutableArray(array: arr) - - for i in 0.. AnyObject { if let bin = data as? NSData { - let placeholder = ["_placeholder" :true, "num": binary.count] + let placeholder = ["_placeholder": true, "num": binary.count] binary.append(bin) return placeholder - } else if var arr = data as? [AnyObject] { - for i in 0.. ([AnyObject], [NSData]) { + static func deconstructData(data: [AnyObject]) -> ([AnyObject], [NSData]) { var binary = [NSData]() - for i in 0..