additional documentation

This commit is contained in:
Peter 2015-11-01 12:05:14 -05:00
parent 5409e624e6
commit 27853479f0
1 changed files with 91 additions and 6 deletions

View File

@ -71,10 +71,14 @@ A struct to parse, encapsulate and facilitate handling of DDP message strings
public struct DDPMessage { public struct DDPMessage {
/** /**
The message properties in an NSDictionary The message's properties, stored as an NSDictionary
*/ */
public var json:NSDictionary! public var json:NSDictionary!
/**
Initialize a message struct, with a Json string
*/
public init(message:String) { public init(message:String) {
if let JSON = message.dictionaryValue() { json = JSON } if let JSON = message.dictionaryValue() { json = JSON }
@ -84,6 +88,9 @@ public struct DDPMessage {
} }
} }
/**
Initialize a message struct, with a dictionary of strings
*/
public init(message:[String:String]) { public init(message:[String:String]) {
json = message as NSDictionary json = message as NSDictionary
} }
@ -101,7 +108,9 @@ public struct DDPMessage {
// Computed variables // Computed variables
// //
// Returns the type of DDP message, or unhandled if it is not a DDP message /**
Returns the DDP message type, of type DDPMessageType enum
*/
public var type:DDPMessageType { public var type:DDPMessageType {
if let msg = message, if let msg = message,
let type = DDPMessageType(rawValue: msg) { let type = DDPMessageType(rawValue: msg) {
@ -110,6 +119,9 @@ public struct DDPMessage {
return DDPMessageType(rawValue: "unhandled")! return DDPMessageType(rawValue: "unhandled")!
} }
/**
Returns a boolean value indicating if the message is an error message or not
*/
public var isError:Bool { public var isError:Bool {
if (self.type == .Error) { return true } // if message is a top level error ("msg"="error") if (self.type == .Error) { return true } // if message is a top level error ("msg"="error")
if let _ = self.error { return true } // if message contains an error object, as in method or nosub if let _ = self.error { return true } // if message contains an error object, as in method or nosub
@ -117,102 +129,175 @@ public struct DDPMessage {
} }
// Returns the root-level keys of the JSON object // Returns the root-level keys of the JSON object
public var keys:[String] { internal var keys:[String] {
return json.allKeys as! [String] return json.allKeys as! [String]
} }
public func hasProperty(name:String) -> Bool { internal func hasProperty(name:String) -> Bool {
if let property = json[name] where ((property as! NSObject) != NSNull()) { if let property = json[name] where ((property as! NSObject) != NSNull()) {
return true return true
} }
return false return false
} }
/**
The optional DDP message
*/
public var message:String? { public var message:String? {
get { return json["msg"] as? String } get { return json["msg"] as? String }
} }
/**
The optional DDP session string
*/
public var session:String? { public var session:String? {
get { return json["session"] as? String } get { return json["session"] as? String }
} }
/**
The optional DDP version string
*/
public var version:String? { public var version:String? {
get { return json["version"] as? String } get { return json["version"] as? String }
} }
/**
The optional DDP support string
*/
public var support:String? { public var support:String? {
get { return json["support"] as? String } get { return json["support"] as? String }
} }
/**
The optional DDP message id string
*/
public var id:String? { public var id:String? {
get { return json["id"] as? String } get { return json["id"] as? String }
} }
/**
The optional DDP name string
*/
public var name:String? { public var name:String? {
get { return json["name"] as? String } get { return json["name"] as? String }
} }
/**
The optional DDP param string
*/
public var params:String? { public var params:String? {
get { return json["params"] as? String } get { return json["params"] as? String }
} }
/**
The optional DDP error object
*/
public var error:DDPError? { public var error:DDPError? {
get { if let e = json["error"] as? NSDictionary { return DDPError(json:e) } else { return nil }} get { if let e = json["error"] as? NSDictionary { return DDPError(json:e) } else { return nil }}
} }
/**
The optional DDP collection name string
*/
public var collection:String? { public var collection:String? {
get { return json["collection"] as? String } get { return json["collection"] as? String }
} }
/**
The optional DDP fields dictionary
*/
public var fields:NSDictionary? { public var fields:NSDictionary? {
get { return json["fields"] as? NSDictionary } get { return json["fields"] as? NSDictionary }
} }
/**
The optional DDP cleared array. Contains an array of fields that should be removed
*/
public var cleared:[String]? { public var cleared:[String]? {
get { return json["cleared"] as? [String] } get { return json["cleared"] as? [String] }
} }
/**
The optional method name
*/
public var method:String? { public var method:String? {
get { return json["method"] as? String } get { return json["method"] as? String }
} }
/**
The optional random seed JSON value (an arbitrary client-determined seed for pseudo-random generators)
*/
public var randomSeed:String? { public var randomSeed:String? {
get { return json["randomSeed"] as? String } get { return json["randomSeed"] as? String }
} }
/**
The optional result object, containing the result of a method call
*/
public var result:AnyObject? { public var result:AnyObject? {
get { return json["result"] } get { return json["result"] }
} }
/**
The optional array of ids passed to 'method', all of whose writes have been reflected in data messages)
*/
public var methods:[String]? { public var methods:[String]? {
get { return json["methods"] as? [String] } get { return json["methods"] as? [String] }
} }
/**
The optional array of id strings passed to 'sub' which have sent their initial batch of data
*/
public var subs:[String]? { public var subs:[String]? {
get { return json["subs"] as? [String] } get { return json["subs"] as? [String] }
} }
// Communication error properties /**
The optional reason given for an error returned from the server
*/
public var reason:String? { public var reason:String? {
get { return json["reason"] as? String } get { return json["reason"] as? String }
} }
/**
The optional original error message
*/
public var offendingMessage:String? { public var offendingMessage:String? {
get { return json["offendingMessage"] as? String } get { return json["offendingMessage"] as? String }
} }
} }
/**
A struct encapsulating a DDP error message
*/
public struct DDPError { public struct DDPError {
private var json:NSDictionary? private var json:NSDictionary?
/**
The string error code
*/
public var error:String? { return json?["error"] as? String } // Error code public var error:String? { return json?["error"] as? String } // Error code
/**
The detailed message given for an error returned from the server
*/
public var reason:String? { return json?["reason"] as? String } public var reason:String? { return json?["reason"] as? String }
/**
The string providing error details
*/
public var details:String? { return json?["details"] as? String } public var details:String? { return json?["details"] as? String }
/**
If the original message parsed properly, it is included here
*/
public var offendingMessage:String? { return json?["offendingMessage"] as? String } public var offendingMessage:String? { return json?["offendingMessage"] as? String }
/**
Helper variable that returns true if the struct has both an error code and a reason
*/
var isValid:Bool { var isValid:Bool {
if let _ = error { return true } if let _ = error { return true }
if let _ = reason { return true } if let _ = reason { return true }