redo parsing
This commit is contained in:
parent
6dd40cffab
commit
013395a4c4
41
README.md
41
README.md
@ -25,9 +25,28 @@ socket.on("connect") {data in
|
|||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
socket.on("foobar") {data in
|
socket.on("jsonTest") {data in
|
||||||
if let json = socket.toJSON(data) {
|
if let json = data as? NSDictionary {
|
||||||
println(json["test"])
|
println(json["test"]!) // foo bar
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
socket.on("boolTest") {data in
|
||||||
|
if let bool = data as? Bool {
|
||||||
|
println(bool) // true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
socket.on("arrayTest") {data in
|
||||||
|
if let array = data as? [Any] {
|
||||||
|
println(array[0]) // 2
|
||||||
|
println(array[1]) // "test"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
socket.on("intTest") {data in
|
||||||
|
if let stringData = data as? NSString {
|
||||||
|
println(stringData.integerValue)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
socket.connect()
|
socket.connect()
|
||||||
@ -42,16 +61,12 @@ socket.emit("testObject", args: [
|
|||||||
|
|
||||||
// Recieving data
|
// Recieving data
|
||||||
socket.on("dataTest") {data in
|
socket.on("dataTest") {data in
|
||||||
var err:NSError?
|
if let json = data as? NSDictionary {
|
||||||
var stringData = data as String
|
var imageData = NSData(base64EncodedString: (json["test"] as String),
|
||||||
var data = stringData.dataUsingEncoding(NSUTF8StringEncoding)
|
options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters)
|
||||||
var json = NSJSONSerialization.JSONObjectWithData(data!,
|
if let dataAsString = NSString(data: imageData!, encoding: NSUTF8StringEncoding) {
|
||||||
options: NSJSONReadingOptions.AllowFragments, error: &err) as NSDictionary
|
println(dataAsString)
|
||||||
var bufData = NSData(base64EncodedString: (json["buf"] as String),
|
}
|
||||||
options: NSDataBase64DecodingOptions.allZeros)
|
|
||||||
if let dataAsString = NSString(data: bufData!, encoding: NSUTF8StringEncoding) {
|
|
||||||
println(dataAsString)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|||||||
@ -190,16 +190,16 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Handles events
|
// Handles events
|
||||||
func handleEvent(#event:String, data:Any?) {
|
func handleEvent(#event:String, var data:Any?) {
|
||||||
// println("Should do event: \(event) with data: \(data)")
|
// println("Should do event: \(event) with data: \(data)")
|
||||||
|
data = parseData(data)
|
||||||
for handler in self.handlers {
|
for handler in self.handlers {
|
||||||
if (handler.event == event) {
|
if (handler.event == event) {
|
||||||
if (data != nil) {
|
if (data == nil) {
|
||||||
handler.executeCallback(data)
|
|
||||||
} else {
|
|
||||||
handler.executeCallback(nil)
|
handler.executeCallback(nil)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
handler.executeCallback(data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -215,6 +215,36 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
|||||||
self.connect()
|
self.connect()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// temporary until I redo how messages are parsed
|
||||||
|
private func parseData(data:Any?) -> Any? {
|
||||||
|
if (data == nil) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if let json = self.toJSON(data) {
|
||||||
|
return json
|
||||||
|
}
|
||||||
|
|
||||||
|
let dataAsString = data as String
|
||||||
|
if (dataAsString == "true") {
|
||||||
|
return true
|
||||||
|
} else if (dataAsString == "false") {
|
||||||
|
return false
|
||||||
|
} else if (dataAsString.hasPrefix("[") && dataAsString.hasSuffix("]")) {
|
||||||
|
var trimArray = Array(dataAsString)
|
||||||
|
trimArray.removeAtIndex(0)
|
||||||
|
trimArray.removeAtIndex(trimArray.count - 1)
|
||||||
|
var ret = String(trimArray).componentsSeparatedByString(",")
|
||||||
|
var returnArray = [Any]()
|
||||||
|
for item in ret {
|
||||||
|
returnArray.append(item)
|
||||||
|
}
|
||||||
|
return returnArray
|
||||||
|
}
|
||||||
|
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
|
||||||
// Parses a NSDictionary, looking for NSData objects
|
// Parses a NSDictionary, looking for NSData objects
|
||||||
private func parseNSDictionary(#dict:NSDictionary) -> (NSDictionary, Bool, [NSData]?) {
|
private func parseNSDictionary(#dict:NSDictionary) -> (NSDictionary, Bool, [NSData]?) {
|
||||||
var returnDict = NSMutableDictionary()
|
var returnDict = NSMutableDictionary()
|
||||||
@ -275,13 +305,14 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
|||||||
let messageInternals = RegexMutable(messagePart)["\\[\"(.*?)\",(.*?)?\\]$"].groups()
|
let messageInternals = RegexMutable(messagePart)["\\[\"(.*?)\",(.*?)?\\]$"].groups()
|
||||||
if (messageInternals != nil && messageInternals.count > 2) {
|
if (messageInternals != nil && messageInternals.count > 2) {
|
||||||
let event = messageInternals[1]
|
let event = messageInternals[1]
|
||||||
var data:Any!
|
var data:String?
|
||||||
if (messageInternals[2] == "") {
|
if (messageInternals[2] == "") {
|
||||||
data = nil
|
data = nil
|
||||||
} else {
|
} else {
|
||||||
data = messageInternals[2]
|
data = messageInternals[2]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
self.handleEvent(event: event, data: data)
|
self.handleEvent(event: event, data: data)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -356,16 +387,19 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Helper method
|
// Helper method
|
||||||
func toJSON(data:Any!) -> NSDictionary? {
|
func toJSON(data:Any?) -> NSDictionary? {
|
||||||
|
if (data == nil || data is Bool || data is Int) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
var err:NSError?
|
var err:NSError?
|
||||||
var stringData = data as String
|
var stringData = data as String
|
||||||
var JSONData = stringData.dataUsingEncoding(NSUTF8StringEncoding)
|
var JSONData = stringData.dataUsingEncoding(NSUTF8StringEncoding)
|
||||||
var json = NSJSONSerialization.JSONObjectWithData(JSONData!, options: NSJSONReadingOptions.allZeros, error: &err) as NSDictionary
|
var json:AnyObject? = NSJSONSerialization.JSONObjectWithData(JSONData!, options: NSJSONReadingOptions.allZeros, error: &err)
|
||||||
if (err != nil) {
|
if (err != nil || json == nil) {
|
||||||
println(err?.localizedDescription)
|
// println(err?.localizedDescription)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return json
|
return json as? NSDictionary
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called when a message is recieved
|
// Called when a message is recieved
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user