From 64d25271901afe957872ec3f16f10963e9db139e Mon Sep 17 00:00:00 2001 From: Erasov Ivan Date: Wed, 18 Jul 2018 15:23:10 +0300 Subject: [PATCH 1/6] Added passing cookies from long polling session to web scoket --- Source/SocketIO/Engine/SocketEngine.swift | 2 +- Source/SocketIO/Engine/SocketEngineSpec.swift | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Source/SocketIO/Engine/SocketEngine.swift b/Source/SocketIO/Engine/SocketEngine.swift index 4904ee5..c3db64f 100644 --- a/Source/SocketIO/Engine/SocketEngine.swift +++ b/Source/SocketIO/Engine/SocketEngine.swift @@ -281,7 +281,7 @@ open class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePollable, So private func createWebSocketAndConnect() { var req = URLRequest(url: urlWebSocketWithSid) - addHeaders(to: &req) + addHeaders(to: &req, includingCookies: session?.configuration.httpCookieStorage?.cookies) ws = WebSocket(request: req) ws?.callbackQueue = engineQueue diff --git a/Source/SocketIO/Engine/SocketEngineSpec.swift b/Source/SocketIO/Engine/SocketEngineSpec.swift index fa08519..3034a0d 100644 --- a/Source/SocketIO/Engine/SocketEngineSpec.swift +++ b/Source/SocketIO/Engine/SocketEngineSpec.swift @@ -155,11 +155,16 @@ extension SocketEngineSpec { return com.url! } - func addHeaders(to req: inout URLRequest) { - if let cookies = cookies { - req.allHTTPHeaderFields = HTTPCookie.requestHeaderFields(with: cookies) + func addHeaders(to req: inout URLRequest, includingCookies additionalCookies: [HTTPCookie]? = nil) { + + var cookiesToAdd = [HTTPCookie]() + cookiesToAdd += cookies ?? [] + cookiesToAdd += additionalCookies ?? [] + + if !cookiesToAdd.isEmpty { + req.allHTTPHeaderFields = HTTPCookie.requestHeaderFields(with: cookiesToAdd) } - + if let extraHeaders = extraHeaders { for (headerName, value) in extraHeaders { req.setValue(value, forHTTPHeaderField: headerName) From cfc01ac9fc2fdf73a1e7cec8d381f55471d8f94a Mon Sep 17 00:00:00 2001 From: Erasov Ivan Date: Wed, 18 Jul 2018 16:59:34 +0300 Subject: [PATCH 2/6] Code style fixes --- Source/SocketIO/Engine/SocketEngineSpec.swift | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Source/SocketIO/Engine/SocketEngineSpec.swift b/Source/SocketIO/Engine/SocketEngineSpec.swift index 3034a0d..3f31c80 100644 --- a/Source/SocketIO/Engine/SocketEngineSpec.swift +++ b/Source/SocketIO/Engine/SocketEngineSpec.swift @@ -156,9 +156,7 @@ extension SocketEngineSpec { } func addHeaders(to req: inout URLRequest, includingCookies additionalCookies: [HTTPCookie]? = nil) { - - var cookiesToAdd = [HTTPCookie]() - cookiesToAdd += cookies ?? [] + var cookiesToAdd = cookies ?? [] cookiesToAdd += additionalCookies ?? [] if !cookiesToAdd.isEmpty { From eab73c81a73fd2ebf72d7434012bb918cac33548 Mon Sep 17 00:00:00 2001 From: Erasov Ivan Date: Wed, 18 Jul 2018 17:01:50 +0300 Subject: [PATCH 3/6] Fixed a typo --- Source/SocketIO/Engine/SocketEngineSpec.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/SocketIO/Engine/SocketEngineSpec.swift b/Source/SocketIO/Engine/SocketEngineSpec.swift index 3f31c80..4078535 100644 --- a/Source/SocketIO/Engine/SocketEngineSpec.swift +++ b/Source/SocketIO/Engine/SocketEngineSpec.swift @@ -156,7 +156,7 @@ extension SocketEngineSpec { } func addHeaders(to req: inout URLRequest, includingCookies additionalCookies: [HTTPCookie]? = nil) { - var cookiesToAdd = cookies ?? [] + var cookiesToAdd: [HTTPCookie] = cookies ?? [] cookiesToAdd += additionalCookies ?? [] if !cookiesToAdd.isEmpty { From 9bf073156ff9b208e5e556034af75b1a40856e3b Mon Sep 17 00:00:00 2001 From: Erik Little Date: Sat, 21 Jul 2018 10:39:27 -0400 Subject: [PATCH 4/6] fix tab issue --- Source/SocketIO/Parse/SocketParsable.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/SocketIO/Parse/SocketParsable.swift b/Source/SocketIO/Parse/SocketParsable.swift index 5763e35..35a04b9 100644 --- a/Source/SocketIO/Parse/SocketParsable.swift +++ b/Source/SocketIO/Parse/SocketParsable.swift @@ -77,7 +77,7 @@ public extension SocketParsable where Self: SocketManagerSpec & SocketDataBuffer internal func parseString(_ message: String) throws -> SocketPacket { var reader = SocketStringReader(message: message) - guard let type = Int(reader.read(count: 1)).flatMap({ SocketPacket.PacketType(rawValue: $0) }) else { + guard let type = Int(reader.read(count: 1)).flatMap({ SocketPacket.PacketType(rawValue: $0) }) else { throw SocketParsableError.invalidPacketType } From 6db5348daa11622b240d2041e84171638157c0fe Mon Sep 17 00:00:00 2001 From: Erik Little Date: Fri, 27 Jul 2018 08:42:30 -0400 Subject: [PATCH 5/6] use AnyObject over class in protocols --- Source/SocketIO/Client/SocketIOClientSpec.swift | 2 +- Source/SocketIO/Manager/SocketManagerSpec.swift | 2 +- Source/SocketIO/Parse/SocketParsable.swift | 4 ++-- Source/SocketIO/Util/SocketLogger.swift | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Source/SocketIO/Client/SocketIOClientSpec.swift b/Source/SocketIO/Client/SocketIOClientSpec.swift index 5015e44..3835412 100644 --- a/Source/SocketIO/Client/SocketIOClientSpec.swift +++ b/Source/SocketIO/Client/SocketIOClientSpec.swift @@ -26,7 +26,7 @@ import Dispatch import Foundation /// Defines the interface for a SocketIOClient. -public protocol SocketIOClientSpec : class { +public protocol SocketIOClientSpec : AnyObject { // MARK: Properties /// A handler that will be called on any event. diff --git a/Source/SocketIO/Manager/SocketManagerSpec.swift b/Source/SocketIO/Manager/SocketManagerSpec.swift index 79f0e98..4440193 100644 --- a/Source/SocketIO/Manager/SocketManagerSpec.swift +++ b/Source/SocketIO/Manager/SocketManagerSpec.swift @@ -46,7 +46,7 @@ import Foundation /// or call one of the `disconnectSocket` methods on this class. /// @objc -public protocol SocketManagerSpec : class, SocketEngineClient { +public protocol SocketManagerSpec : AnyObject, SocketEngineClient { // MARK: Properties /// Returns the socket associated with the default namespace ("/"). diff --git a/Source/SocketIO/Parse/SocketParsable.swift b/Source/SocketIO/Parse/SocketParsable.swift index 35a04b9..aa5e399 100644 --- a/Source/SocketIO/Parse/SocketParsable.swift +++ b/Source/SocketIO/Parse/SocketParsable.swift @@ -23,7 +23,7 @@ import Foundation /// Defines that a type will be able to parse socket.io-protocol messages. -public protocol SocketParsable : class { +public protocol SocketParsable : AnyObject { // MARK: Methods /// Called when the engine has received some binary data that should be attached to a packet. @@ -57,7 +57,7 @@ public enum SocketParsableError : Error { } /// Says that a type will be able to buffer binary data before all data for an event has come in. -public protocol SocketDataBufferable : class { +public protocol SocketDataBufferable : AnyObject { // MARK: Properties /// A list of packets that are waiting for binary data. diff --git a/Source/SocketIO/Util/SocketLogger.swift b/Source/SocketIO/Util/SocketLogger.swift index 46e3f1b..69293fb 100644 --- a/Source/SocketIO/Util/SocketLogger.swift +++ b/Source/SocketIO/Util/SocketLogger.swift @@ -25,7 +25,7 @@ import Foundation /// Represents a class will log client events. -public protocol SocketLogger : class { +public protocol SocketLogger : AnyObject { // MARK: Properties /// Whether to log or not From 165ec257131bc7ecfa52e93c85c295437118ba15 Mon Sep 17 00:00:00 2001 From: Erik Little Date: Sun, 29 Jul 2018 10:23:41 -0400 Subject: [PATCH 6/6] Add isBinary property to SocketPacket.PacketType --- Source/SocketIO/Manager/SocketManager.swift | 2 +- Source/SocketIO/Parse/SocketPacket.swift | 9 ++++++++- Source/SocketIO/Parse/SocketParsable.swift | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Source/SocketIO/Manager/SocketManager.swift b/Source/SocketIO/Manager/SocketManager.swift index cf88240..126aec1 100644 --- a/Source/SocketIO/Manager/SocketManager.swift +++ b/Source/SocketIO/Manager/SocketManager.swift @@ -392,7 +392,7 @@ open class SocketManager : NSObject, SocketManagerSpec, SocketParsable, SocketDa private func _parseEngineMessage(_ msg: String) { guard let packet = parseSocketMessage(msg) else { return } - guard packet.type != .binaryAck && packet.type != .binaryEvent else { + guard !packet.type.isBinary else { waitingPackets.append(packet) return diff --git a/Source/SocketIO/Parse/SocketPacket.swift b/Source/SocketIO/Parse/SocketPacket.swift index 4b316fc..e715d04 100644 --- a/Source/SocketIO/Parse/SocketPacket.swift +++ b/Source/SocketIO/Parse/SocketPacket.swift @@ -116,7 +116,7 @@ public struct SocketPacket : CustomStringConvertible { private func createPacketString() -> String { let typeString = String(type.rawValue) // Binary count? - let binaryCountString = typeString + (type == .binaryEvent || type == .binaryAck ? "\(String(binary.count))-" : "") + let binaryCountString = typeString + (type.isBinary ? "\(String(binary.count))-" : "") // Namespace? let nspString = binaryCountString + (nsp != "/" ? "\(nsp)," : "") // Ack number? @@ -181,6 +181,13 @@ public extension SocketPacket { /// Binary Ack: 6 case binaryAck + + // MARK: Properties + + /// Whether or not this type is binary + public var isBinary: Bool { + return self == .binaryAck || self == .binaryEvent + } } } diff --git a/Source/SocketIO/Parse/SocketParsable.swift b/Source/SocketIO/Parse/SocketParsable.swift index aa5e399..1c8b963 100644 --- a/Source/SocketIO/Parse/SocketParsable.swift +++ b/Source/SocketIO/Parse/SocketParsable.swift @@ -88,7 +88,7 @@ public extension SocketParsable where Self: SocketManagerSpec & SocketDataBuffer var namespace = "/" var placeholders = -1 - if type == .binaryEvent || type == .binaryAck { + if type.isBinary { if let holders = Int(reader.readUntilOccurence(of: "-")) { placeholders = holders } else {