Merge pull request #925 from bombbomb/feature/9.0.1/Swift4

Feature/9.0.1/swift4
This commit is contained in:
Erik Little 2018-01-08 14:55:59 -05:00 committed by GitHub
commit 424ab6c944
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 32 additions and 24 deletions

View File

@ -537,9 +537,11 @@
TargetAttributes = { TargetAttributes = {
572EF2181B51F16C00EEBB58 = { 572EF2181B51F16C00EEBB58 = {
CreatedOnToolsVersion = 6.4; CreatedOnToolsVersion = 6.4;
LastSwiftMigration = 0920;
}; };
572EF2231B51F16C00EEBB58 = { 572EF2231B51F16C00EEBB58 = {
CreatedOnToolsVersion = 6.4; CreatedOnToolsVersion = 6.4;
LastSwiftMigration = 0920;
}; };
572EF2371B51F18A00EEBB58 = { 572EF2371B51F18A00EEBB58 = {
CreatedOnToolsVersion = 6.4; CreatedOnToolsVersion = 6.4;
@ -886,7 +888,8 @@
SDKROOT = iphoneos; SDKROOT = iphoneos;
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 3.0; SWIFT_SWIFT3_OBJC_INFERENCE = On;
SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = ""; VERSION_INFO_PREFIX = "";
@ -937,7 +940,8 @@
PRODUCT_BUNDLE_IDENTIFIER = io.socket.SocketIOClientSwift; PRODUCT_BUNDLE_IDENTIFIER = io.socket.SocketIOClientSwift;
SDKROOT = iphoneos; SDKROOT = iphoneos;
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
SWIFT_VERSION = 3.0; SWIFT_SWIFT3_OBJC_INFERENCE = On;
SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES; VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
@ -993,6 +997,8 @@
PRODUCT_BUNDLE_IDENTIFIER = "io.socket.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_BUNDLE_IDENTIFIER = "io.socket.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos; SDKROOT = iphoneos;
SWIFT_SWIFT3_OBJC_INFERENCE = On;
SWIFT_VERSION = 4.0;
}; };
name = Debug; name = Debug;
}; };
@ -1037,6 +1043,8 @@
PRODUCT_BUNDLE_IDENTIFIER = "io.socket.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_BUNDLE_IDENTIFIER = "io.socket.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos; SDKROOT = iphoneos;
SWIFT_SWIFT3_OBJC_INFERENCE = On;
SWIFT_VERSION = 4.0;
VALIDATE_PRODUCT = YES; VALIDATE_PRODUCT = YES;
}; };
name = Release; name = Release;
@ -1094,7 +1102,7 @@
SDKROOT = macosx; SDKROOT = macosx;
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 3.0; SWIFT_VERSION = 4.0;
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = ""; VERSION_INFO_PREFIX = "";
}; };
@ -1146,7 +1154,7 @@
PRODUCT_BUNDLE_IDENTIFIER = "io.socket.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_BUNDLE_IDENTIFIER = "io.socket.$(PRODUCT_NAME:rfc1034identifier)";
SDKROOT = macosx; SDKROOT = macosx;
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
SWIFT_VERSION = 3.0; SWIFT_VERSION = 4.0;
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = ""; VERSION_INFO_PREFIX = "";
}; };
@ -1305,6 +1313,7 @@
SDKROOT = appletvos; SDKROOT = appletvos;
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = 3; TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 9.0; TVOS_DEPLOYMENT_TARGET = 9.0;
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
@ -1356,6 +1365,7 @@
PRODUCT_NAME = SocketIO; PRODUCT_NAME = SocketIO;
SDKROOT = appletvos; SDKROOT = appletvos;
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = 3; TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 9.0; TVOS_DEPLOYMENT_TARGET = 9.0;
VALIDATE_PRODUCT = YES; VALIDATE_PRODUCT = YES;

View File

@ -225,8 +225,7 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll
private func handleBase64(message: String) { private func handleBase64(message: String) {
// binary in base64 string // binary in base64 string
let noPrefix = message[message.index(message.startIndex, offsetBy: 2)..<message.endIndex] let noPrefix = String(message[message.index(message.startIndex, offsetBy: 2)..<message.endIndex])
if let data = NSData(base64Encoded: noPrefix, options: .ignoreUnknownCharacters) { if let data = NSData(base64Encoded: noPrefix, options: .ignoreUnknownCharacters) {
client?.parseEngineBinaryData(data as Data) client?.parseEngineBinaryData(data as Data)
} }
@ -535,13 +534,13 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll
switch type { switch type {
case .message: case .message:
handleMessage(String(fixedString.characters.dropFirst())) handleMessage(String(fixedString.dropFirst()))
case .noop: case .noop:
handleNOOP() handleNOOP()
case .pong: case .pong:
handlePong(with: fixedString) handlePong(with: fixedString)
case .open: case .open:
handleOpen(openData: String(fixedString.characters.dropFirst())) handleOpen(openData: String(fixedString.dropFirst()))
case .close: case .close:
handleClose(fixedString) handleClose(fixedString)
default: default:

View File

@ -94,7 +94,7 @@ extension SocketEnginePollable {
var postStr = "" var postStr = ""
for packet in postWait { for packet in postWait {
let len = packet.characters.count let len = packet.count
postStr += "\(len):\(packet)" postStr += "\(len):\(packet)"
} }
@ -209,7 +209,7 @@ extension SocketEnginePollable {
} }
func parsePollingMessage(_ str: String) { func parsePollingMessage(_ str: String) {
guard str.characters.count != 1 else { return } guard str.count != 1 else { return }
var reader = SocketStringReader(message: str) var reader = SocketStringReader(message: str)

View File

@ -107,13 +107,13 @@ extension SocketParsable where Self: SocketIOClientSpec {
} }
} }
var dataArray = message[message.characters.index(reader.currentIndex, offsetBy: 1)..<message.endIndex] var dataArray = message[message.index(reader.currentIndex, offsetBy: 1)..<message.endIndex]
if type == .error && !dataArray.hasPrefix("[") && !dataArray.hasSuffix("]") { if type == .error && !dataArray.hasPrefix("[") && !dataArray.hasSuffix("]") {
dataArray = "[" + dataArray + "]" dataArray = "[" + dataArray + "]"
} }
switch parseData(dataArray) { switch parseData(String(dataArray)) {
case let .left(err): case let .left(err):
return .left(err) return .left(err)
case let .right(data): case let .right(data):

View File

@ -40,34 +40,33 @@ struct SocketStringReader {
@discardableResult @discardableResult
mutating func advance(by: Int) -> String.Index { mutating func advance(by: Int) -> String.Index {
currentIndex = message.characters.index(currentIndex, offsetBy: by) currentIndex = message.index(currentIndex, offsetBy: by)
return currentIndex return currentIndex
} }
mutating func read(count: Int) -> String { mutating func read(count: Int) -> String {
let readString = message[currentIndex..<message.characters.index(currentIndex, offsetBy: count)] let readString = message[currentIndex..<message.index(currentIndex, offsetBy: count)]
advance(by: count) advance(by: count)
return readString return String(readString)
} }
mutating func readUntilOccurence(of string: String) -> String { mutating func readUntilOccurence(of string: String) -> String {
let substring = message[currentIndex..<message.endIndex] let substring = message.utf16[currentIndex...]
guard let foundRange = substring.range(of: string) else { guard let foundIndex = substring.index(of: string.utf16.first!) else {
currentIndex = message.endIndex currentIndex = message.utf16.endIndex
return substring return String(substring)!
} }
advance(by: message.characters.distance(from: message.characters.startIndex, to: foundRange.lowerBound) + 1) advance(by: substring.distance(from: substring.startIndex, to: foundIndex) + 1)
return substring.substring(to: foundRange.lowerBound) return String(substring[substring.startIndex..<foundIndex])!
} }
mutating func readUntilEnd() -> String { mutating func readUntilEnd() -> String {
return read(count: message.characters.distance(from: currentIndex, to: message.endIndex)) return read(count: message.distance(from: currentIndex, to: message.endIndex))
} }
} }

View File

@ -115,7 +115,7 @@ open class WebSocket : NSObject, StreamDelegate {
// MARK: - Block based API. // MARK: - Block based API.
public var onConnect: ((Void) -> Void)? public var onConnect: (() -> Void)?
public var onDisconnect: ((NSError?) -> Void)? public var onDisconnect: ((NSError?) -> Void)?
public var onText: ((String) -> Void)? public var onText: ((String) -> Void)?
public var onData: ((Data) -> Void)? public var onData: ((Data) -> Void)?