From d2332b76961006617d3f2fac9fbda2286d965fa7 Mon Sep 17 00:00:00 2001 From: Phil Larson Date: Tue, 17 Oct 2017 12:45:15 -0700 Subject: [PATCH] Swift 4.0 and Starscream 3.0 --- ActionCableClient.podspec | 4 +-- ActionCableClient.xcodeproj/project.pbxproj | 8 +++--- Source/Classes/ActionCableClient.swift | 28 ++++++++++----------- Source/Classes/RetryHandler.swift | 6 ++--- 4 files changed, 24 insertions(+), 22 deletions(-) diff --git a/ActionCableClient.podspec b/ActionCableClient.podspec index 1766b5f..97e9372 100644 --- a/ActionCableClient.podspec +++ b/ActionCableClient.podspec @@ -12,12 +12,12 @@ Pod::Spec.new do |s| s.source = { :git => "https://github.com/danielrhodes/Swift-ActionCableClient.git", :tag => s.version.to_s } s.social_media_url = 'https://twitter.com/danielrhodes' - s.pod_target_xcconfig = { 'SWIFT_VERSION' => '3.0' } + s.pod_target_xcconfig = { 'SWIFT_VERSION' => '4.0' } s.ios.deployment_target = '8.0' s.tvos.deployment_target = '9.0' s.requires_arc = true s.source_files = 'Source/Classes/**/*' s.frameworks = 'Foundation' - s.dependency 'Starscream', '~> 2.0.0' + s.dependency 'Starscream', '~> 3.0.0' end diff --git a/ActionCableClient.xcodeproj/project.pbxproj b/ActionCableClient.xcodeproj/project.pbxproj index 680f7e9..9364146 100644 --- a/ActionCableClient.xcodeproj/project.pbxproj +++ b/ActionCableClient.xcodeproj/project.pbxproj @@ -282,7 +282,7 @@ TargetAttributes = { 86D4510C1DC31840006A516E = { CreatedOnToolsVersion = 8.0; - LastSwiftMigration = 0800; + LastSwiftMigration = 0910; ProvisioningStyle = Automatic; }; 86D451321DC3189D006A516E = { @@ -504,7 +504,8 @@ PRODUCT_NAME = ActionCableClient; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -525,7 +526,8 @@ PRODUCT_BUNDLE_IDENTIFIER = com.danielrhodes.ActionCableClient; PRODUCT_NAME = ActionCableClient; SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; }; name = Release; }; diff --git a/Source/Classes/ActionCableClient.swift b/Source/Classes/ActionCableClient.swift index 4cf7114..afc0082 100644 --- a/Source/Classes/ActionCableClient.swift +++ b/Source/Classes/ActionCableClient.swift @@ -71,17 +71,7 @@ open class ActionCableClient { //MARK: Properties open var isConnected : Bool { return socket.isConnected } open var url: Foundation.URL { return socket.currentURL } - - open var headers : [String: String] { - get { return socket.headers } - set { socket.headers = newValue } - } - - open var origin : String? { - get { return socket.origin } - set { socket.origin = newValue } - } - + /// Initialize an ActionCableClient. /// /// Each client represents one connection to the server. @@ -91,9 +81,19 @@ open class ActionCableClient { /// ```swift /// let client = ActionCableClient(URL: NSURL(string: "ws://localhost:3000/cable")!) /// ``` - public required init(url: URL) { + public required init(url: URL, headers: [String: String]? = nil, origin : String? = nil) { /// Setup Initialize Socket - socket = WebSocket(url: url) + var request = URLRequest(url: url) + + if let origin = origin { + request.setValue(origin, forHTTPHeaderField: "Origin") + } + + for (field, value) in headers ?? [:] { + request.setValue(value, forHTTPHeaderField: field) + } + + socket = WebSocket(request: request) setupWebSocket() } @@ -298,7 +298,7 @@ extension ActionCableClient { extension ActionCableClient { fileprivate func setupWebSocket() { - self.socket.onConnect = { [weak self] in self!.didConnect() } + self.socket.onConnect = { [weak self] in self!.didConnect() } as (() -> Void) self.socket.onDisconnect = { [weak self] (error: Swift.Error?) in self!.didDisconnect(error) } self.socket.onText = { [weak self] (text: String) in self!.onText(text) } self.socket.onData = { [weak self] (data: Data) in self!.onData(data) } diff --git a/Source/Classes/RetryHandler.swift b/Source/Classes/RetryHandler.swift index c059e86..2f70b5f 100644 --- a/Source/Classes/RetryHandler.swift +++ b/Source/Classes/RetryHandler.swift @@ -51,14 +51,14 @@ public enum RetryStrategy { internal class RetryHandler : NSObject { var retries : Int = 0 var strategy: RetryStrategy - var callback: ((Void) -> (Void))? + var callback: (() -> (Void))? var timer: Timer? internal required init(strategy : RetryStrategy) { self.strategy = strategy } - func retry(_ callback: @escaping ((Void) -> (Void))) { + func retry(_ callback: @escaping (() -> (Void))) { self.retries += 1 // Save callback @@ -78,7 +78,7 @@ internal class RetryHandler : NSObject { } } - internal func fire(_ timer : Timer) { + @objc internal func fire(_ timer : Timer) { if let callback = self.callback { callback()