22
22
23
23
import Foundation
24
24
25
- private let shredder = SocketParser . Deconstructor ( )
25
+ private let shredder = SocketParser . PacketShredder ( )
26
26
27
27
class SocketParser {
28
28
// Translation of socket.io-parser#deconstructPacket
29
- private class Deconstructor {
29
+ private class PacketShredder {
30
30
var buf = ContiguousArray < NSData > ( )
31
-
32
- func ripAndTear ( data: AnyObject ) -> AnyObject {
31
+
32
+ func shred ( data: AnyObject ) -> AnyObject {
33
33
if let bin = data as? NSData {
34
34
let placeholder = [ " _placeholder " : true , " num " : buf. count]
35
35
36
36
buf. append ( bin)
37
37
38
38
return placeholder
39
- } else if var arr = data as? [ AnyObject ] {
39
+ } else if let arr = data as? NSArray {
40
+ var newArr = NSMutableArray ( array: arr)
41
+
40
42
for i in 0 ..< arr. count {
41
- arr [ i] = ripAndTear ( arr [ i] )
43
+ newArr [ i] = shred ( arr [ i] )
42
44
}
43
45
44
- return arr
45
- } else if var newDict = data as? [ String : AnyObject ] {
46
+ return newArr
47
+ } else if let dict = data as? NSDictionary {
48
+ var newDict = NSMutableDictionary ( dictionary: dict)
49
+
46
50
for (key, value) in newDict {
47
- newDict [ key] = ripAndTear ( value)
51
+ newDict [ key as NSCopying ] = shred ( value)
48
52
}
49
53
50
54
return newDict
@@ -62,7 +66,7 @@ class SocketParser {
62
66
63
67
for i in 0 ..< data. count {
64
68
if data [ i] is NSArray || data [ i] is NSDictionary {
65
- data [ i] = ripAndTear ( data [ i] )
69
+ data [ i] = shred ( data [ i] )
66
70
} else if let bin = data [ i] as? NSData {
67
71
data [ i] = [ " _placeholder " : true , " num " : buf. count]
68
72
buf. append ( bin)
0 commit comments