@@ -41,6 +41,75 @@ extension NSCharacterSet {
4141 }
4242}
4343
44+ extension NSDictionary {
45+ private static func keyValueToSocketIOClientOption( key: String , value: AnyObject ) -> SocketIOClientOption ? {
46+ switch ( key, value) {
47+ case let ( " connectParams " , params as [ String : AnyObject ] ) :
48+ return . ConnectParams( params)
49+ case let ( " cookies " , cookies as [ NSHTTPCookie ] ) :
50+ return . Cookies( cookies)
51+ case let ( " doubleEncodeUTF8 " , encode as Bool ) :
52+ return . DoubleEncodeUTF8( encode)
53+ case let ( " extraHeaders " , headers as [ String : String ] ) :
54+ return . ExtraHeaders( headers)
55+ case let ( " forceNew " , force as Bool ) :
56+ return . ForceNew( force)
57+ case let ( " forcePolling " , force as Bool ) :
58+ return . ForcePolling( force)
59+ case let ( " forceWebsockets " , force as Bool ) :
60+ return . ForceWebsockets( force)
61+ case let ( " handleQueue " , queue as dispatch_queue_t ) :
62+ return . HandleQueue( queue)
63+ case let ( " log " , log as Bool ) :
64+ return . Log( log)
65+ case let ( " logger " , logger as SocketLogger ) :
66+ return . Logger( logger)
67+ case let ( " nsp " , nsp as String ) :
68+ return . Nsp( nsp)
69+ case let ( " path " , path as String ) :
70+ return . Path( path)
71+ case let ( " reconnects " , reconnects as Bool ) :
72+ return . Reconnects( reconnects)
73+ case let ( " reconnectAttempts " , attempts as Int ) :
74+ return . ReconnectAttempts( attempts)
75+ case let ( " reconnectWait " , wait as Int ) :
76+ return . ReconnectWait( wait)
77+ case let ( " secure " , secure as Bool ) :
78+ return . Secure( secure)
79+ case let ( " security " , security as SSLSecurity ) :
80+ return . Security( security)
81+ case let ( " selfSigned " , selfSigned as Bool ) :
82+ return . SelfSigned( selfSigned)
83+ case let ( " sessionDelegate " , delegate as NSURLSessionDelegate ) :
84+ return . SessionDelegate( delegate)
85+ case let ( " voipEnabled " , enable as Bool ) :
86+ return . VoipEnabled( enable)
87+ default :
88+ return nil
89+ }
90+ }
91+
92+ func toSocketOptionsSet( ) -> Set < SocketIOClientOption > {
93+ var options = Set < SocketIOClientOption > ( )
94+
95+ for (rawKey, value) in self {
96+ if let key = rawKey as? String , opt = NSDictionary . keyValueToSocketIOClientOption ( key, value: value) {
97+ options. insertIgnore ( opt)
98+ }
99+ }
100+
101+ return options
102+ }
103+ }
104+
105+ extension Set where Element : ClientOption {
106+ mutating func insertIgnore( element: Element ) {
107+ if !contains( element) {
108+ insert ( element)
109+ }
110+ }
111+ }
112+
44113extension String {
45114 func toArray( ) throws -> [ AnyObject ] {
46115 guard let stringData = dataUsingEncoding ( NSUTF8StringEncoding, allowLossyConversion: false ) else { return [ ] }
0 commit comments