http://git-wip-us.apache.org/repos/asf/usergrid/blob/c638c774/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridEntity.swift
----------------------------------------------------------------------
diff --git 
a/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridEntity.swift
 
b/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridEntity.swift
deleted file mode 100644
index 4b6fe8f..0000000
--- 
a/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridEntity.swift
+++ /dev/null
@@ -1,613 +0,0 @@
-//
-//  UsergridEntity.swift
-//  UsergridSDK
-//
-//  Created by Robert Walsh on 7/21/15.
-//
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  The ASF licenses this file to You
- * under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.  For additional information regarding
- * copyright in this work, please see the NOTICE file in the top level
- * directory of this distribution.
- *
- */
-
-import Foundation
-import CoreLocation
-
-/**
-`UsergridEntity` is the base class that contains a single Usergrid entity. 
-
-`UsergridEntity` maintains a set of accessor properties for standard Usergrid 
schema properties (e.g. name, uuid), and supports helper methods for accessing 
any custom properties that might exist.
-*/
-public class UsergridEntity: NSObject, NSCoding {
-
-    static private var subclassMappings: [String:UsergridEntity.Type] = 
[UsergridUser.USER_ENTITY_TYPE:UsergridUser.self,UsergridDevice.DEVICE_ENTITY_TYPE:UsergridDevice.self]
-
-    // MARK: - Instance Properties -
-
-    /// The property dictionary that stores the properties values of the 
`UsergridEntity` object.
-    private var properties: [String : AnyObject] {
-        didSet {
-            if let fileMetaData = 
properties.removeValueForKey(UsergridFileMetaData.FILE_METADATA) as? 
[String:AnyObject] {
-                self.fileMetaData = UsergridFileMetaData(fileMetaDataJSON: 
fileMetaData)
-            } else {
-                self.fileMetaData = nil
-            }
-        }
-    }
-
-    /// The `UsergridAsset` that contains the asset data.
-    public var asset: UsergridAsset?
-
-    /// The `UsergridFileMetaData` of this `UsergridEntity`.
-    private(set) public var fileMetaData : UsergridFileMetaData?
-
-    /// Property helper method for the `UsergridEntity` objects 
`UsergridEntityProperties.EntityType`.
-    public var type: String { return 
self.getEntitySpecificProperty(.EntityType) as! String }
-
-    /// Property helper method for the `UsergridEntity` objects 
`UsergridEntityProperties.UUID`.
-    public var uuid: String? { return self.getEntitySpecificProperty(.UUID) 
as? String }
-
-    /// Property helper method for the `UsergridEntity` objects 
`UsergridEntityProperties.Name`.
-    public var name: String? { return self.getEntitySpecificProperty(.Name) 
as? String }
-
-    /// Property helper method for the `UsergridEntity` objects 
`UsergridEntityProperties.Created`.
-    public var created: NSDate? { return 
self.getEntitySpecificProperty(.Created) as? NSDate }
-
-    /// Property helper method for the `UsergridEntity` objects 
`UsergridEntityProperties.Modified`.
-    public var modified: NSDate? { return 
self.getEntitySpecificProperty(.Modified) as? NSDate }
-
-    /// Property helper method for the `UsergridEntity` objects 
`UsergridEntityProperties.Location`.
-    public var location: CLLocation? {
-        get { return self.getEntitySpecificProperty(.Location) as? CLLocation }
-        set { self[UsergridEntityProperties.Location.stringValue] = newValue }
-    }
-
-    /// Property helper method to get the UUID or name of the `UsergridEntity`.
-    public var uuidOrName: String? { return self.uuid ?? self.name }
-
-    /// Tells you if this `UsergridEntity` has a type of `user`.
-    public var isUser: Bool { return self is UsergridUser || self.type == 
UsergridUser.USER_ENTITY_TYPE }
-
-    /// Tells you if there is an asset associated with this entity.
-    public var hasAsset: Bool { return self.asset != nil || 
self.fileMetaData?.contentLength > 0 }
-
-    /// The JSON object value.
-    public var jsonObjectValue : [String:AnyObject] { return self.properties }
-
-    /// The string value.
-    public var stringValue : String { return NSString(data: try! 
NSJSONSerialization.dataWithJSONObject(self.jsonObjectValue, options: 
.PrettyPrinted), encoding: NSASCIIStringEncoding) as! String }
-
-    /// The description.
-    public override var description : String {
-        return "Properties of Entity: \(stringValue)."
-    }
-
-    /// The debug description.
-    public override var debugDescription : String {
-        return "Properties of Entity: \(stringValue)."
-    }
-
-    // MARK: - Initialization -
-
-    /**
-    Designated initializer for `UsergridEntity` objects
-
-    - parameter type:         The type associated with the `UsergridEntity` 
object.
-    - parameter name:         The optional name associated with the 
`UsergridEntity` object.
-    - parameter propertyDict: The optional property dictionary that the 
`UsergridEntity` object will start out with.
-
-    - returns: A new `UsergridEntity` object.
-    */
-    required public init(type:String, name:String? = nil, 
propertyDict:[String:AnyObject]? = nil) {
-        self.properties = propertyDict ?? [:]
-        super.init()
-        if self is UsergridUser {
-            self.properties[UsergridEntityProperties.EntityType.stringValue] = 
UsergridUser.USER_ENTITY_TYPE
-        } else if self is UsergridDevice {
-            self.properties[UsergridEntityProperties.EntityType.stringValue] = 
UsergridDevice.DEVICE_ENTITY_TYPE
-        } else {
-            self.properties[UsergridEntityProperties.EntityType.stringValue] = 
type
-        }
-        if let entityName = name {
-            self.properties[UsergridEntityProperties.Name.stringValue] = 
entityName
-        }
-    }
-
-    private func copyInternalsFromEntity(entity:UsergridEntity) {
-        self.properties = entity.properties
-        self.asset = entity.asset ?? self.asset
-    }
-
-
-    /**
-     Used for custom mapping subclasses to a given `Usergrid` type.
-
-     - parameter type:       The type of the `Usergrid` object.
-     - parameter toSubclass: The subclass `UsergridEntity.Type` to map it to.
-     */
-    public static func 
mapCustomType(type:String,toSubclass:UsergridEntity.Type) {
-        UsergridEntity.subclassMappings[type] = toSubclass
-    }
-
-    /**
-    Class convenience constructor for creating `UsergridEntity` objects 
dynamically.
-
-    - parameter jsonDict: A valid JSON dictionary which must contain at the 
very least a value for the `type` key.
-
-    - returns: A `UsergridEntity` object provided that the `type` key within 
the dictionay exists. Otherwise nil.
-    */
-    public class func entity(jsonDict jsonDict: [String:AnyObject]) -> 
UsergridEntity? {
-        if let type = 
jsonDict[UsergridEntityProperties.EntityType.stringValue] as? String {
-            if let mapping = UsergridEntity.subclassMappings[type] {
-                return mapping.init(type: type,propertyDict:jsonDict)
-            } else {
-                return UsergridEntity(type:type, propertyDict:jsonDict)
-            }
-        } else {
-            return nil
-        }
-    }
-
-    /**
-    Class convenience constructor for creating multiple `UsergridEntity` 
objects dynamically.
-
-    - parameter entitiesJSONArray: An array which contains dictionaries that 
are used to create the `UsergridEntity` objects.
-
-    - returns: An array of `UsergridEntity`.
-    */
-    public class func entities(jsonArray entitiesJSONArray: 
[[String:AnyObject]]) -> [UsergridEntity] {
-        var entityArray : [UsergridEntity] = []
-        for entityJSONDict in entitiesJSONArray {
-            if let entity = UsergridEntity.entity(jsonDict:entityJSONDict) {
-                entityArray.append(entity)
-            }
-        }
-        return entityArray
-    }
-
-    // MARK: - NSCoding -
-
-    /**
-    NSCoding protocol initializer.
-
-    - parameter aDecoder: The decoder.
-
-    - returns: A decoded `UsergridUser` object.
-    */
-    required public init?(coder aDecoder: NSCoder) {
-        guard let properties = aDecoder.decodeObjectForKey("properties") as? 
[String:AnyObject]
-            else {
-                self.properties = [:]
-                super.init()
-                return nil
-        }
-        self.properties = properties
-        self.fileMetaData = aDecoder.decodeObjectForKey("fileMetaData") as? 
UsergridFileMetaData
-        self.asset = aDecoder.decodeObjectForKey("asset") as? UsergridAsset
-        super.init()
-    }
-
-    /**
-     NSCoding protocol encoder.
-
-     - parameter aCoder: The encoder.
-     */
-    public func encodeWithCoder(aCoder: NSCoder) {
-        aCoder.encodeObject(self.properties, forKey: "properties")
-        aCoder.encodeObject(self.fileMetaData, forKey: "fileMetaData")
-        aCoder.encodeObject(self.asset, forKey: "asset")
-    }
-
-    // MARK: - Property Manipulation -
-
-    /**
-    Subscript for the `UsergridEntity` class.
-    
-    - Example usage:
-        ```
-        let propertyValue = usergridEntity["propertyName"]
-        usergridEntity["propertyName"] = propertyValue
-        ```
-    */
-    public subscript(propertyName: String) -> AnyObject? {
-        get {
-            if let entityProperty = 
UsergridEntityProperties.fromString(propertyName) {
-                return self.getEntitySpecificProperty(entityProperty)
-            } else {
-                let propertyValue = self.properties[propertyName]
-                if propertyValue === NSNull() { // Let's just return nil for 
properties that have been removed instead of NSNull
-                    return nil
-                } else {
-                    return propertyValue
-                }
-            }
-        }
-        set(propertyValue) {
-            if let value = propertyValue {
-                if let entityProperty = 
UsergridEntityProperties.fromString(propertyName) {
-                    if entityProperty.isMutableForEntity(self) {
-                        if entityProperty == .Location {
-                            if let location = value as? CLLocation {
-                                properties[propertyName] = 
[ENTITY_LATITUDE:location.coordinate.latitude,
-                                                            
ENTITY_LONGITUDE:location.coordinate.longitude]
-                            } else if let location = value as? 
CLLocationCoordinate2D {
-                                properties[propertyName] = 
[ENTITY_LATITUDE:location.latitude,
-                                                            
ENTITY_LONGITUDE:location.longitude]
-                            } else if let location = value as? [String:Double] 
{
-                                if let lat = location[ENTITY_LATITUDE], long = 
location[ENTITY_LONGITUDE] {
-                                    properties[propertyName] = 
[ENTITY_LATITUDE:lat,
-                                                                
ENTITY_LONGITUDE:long]
-                                }
-                            }
-                        } else {
-                            properties[propertyName] = value
-                        }
-                    }
-                } else {
-                    properties[propertyName] = value
-                }
-            } else { // If the property value is nil we assume they wanted to 
remove the property.
-
-                // We set the value for this property to Null so that when a 
PUT is performed on the entity the property will actually be removed from the 
Entity on Usergrid
-                if let entityProperty = 
UsergridEntityProperties.fromString(propertyName){
-                    if entityProperty.isMutableForEntity(self) {
-                        properties[propertyName] = NSNull()
-                    }
-                } else {
-                    properties[propertyName] = NSNull()
-                }
-            }
-        }
-    }
-
-    /**
-    Updates a properties value for the given property name.
-
-    - parameter name:  The name of the property.
-    - parameter value: The value to update to.
-    */
-    public func putProperty(name:String,value:AnyObject?) {
-        self[name] = value
-    }
-
-    /**
-    Updates a set of properties that are within the given properties 
dictionary.
-
-    - parameter properties: The property dictionary containing the properties 
names and values.
-    */
-    public func putProperties(properties:[String:AnyObject]) {
-        for (name,value) in properties {
-            self.putProperty(name, value: value)
-        }
-    }
-
-    /**
-    Removes the property for the given property name.
-
-    - parameter name: The name of the property.
-    */
-    public func removeProperty(name:String) {
-        self[name] = nil
-    }
-
-    /**
-    Removes the properties with the names within the propertyNames array
-
-    - parameter propertyNames: An array of property names.
-    */
-    public func removeProperties(propertyNames:[String]) {
-        for name in propertyNames {
-            self.removeProperty(name)
-        }
-    }
-
-    /**
-    Appends the given value to the end of the properties current value.
-
-    - parameter name:  The name of the property.
-     - parameter value: The value or an array of values to append.
-    */
-    public func append(name:String, value:AnyObject) {
-        self.insertArray(name, values:value as? [AnyObject] ?? [value], index: 
Int.max)
-    }
-
-    /**
-    Inserts the given value at the given index within the properties current 
value.
-
-    - parameter name:  The name of the property.
-    - parameter index: The index to insert at.
-    - parameter value: The value or an array of values to insert.
-    */
-    public func insert(name:String, value:AnyObject, index:Int = 0) {
-        self.insertArray(name, values:value as? [AnyObject] ?? [value], index: 
index)
-    }
-
-    /**
-    Inserts an array of property values at a given index within the properties 
current value.
-
-    - parameter name:   The name of the property
-    - parameter index:  The index to insert at.
-    - parameter values: The values to insert.
-    */
-    private func insertArray(name:String,values:[AnyObject], index:Int = 0) {
-        if let propertyValue = self[name] {
-            if let arrayValue = propertyValue as? [AnyObject] {
-                var arrayOfValues = arrayValue
-                if  index > arrayValue.count {
-                    arrayOfValues.appendContentsOf(values)
-                } else {
-                    arrayOfValues.insertContentsOf(values, at: index)
-                }
-                self[name] = arrayOfValues
-            } else {
-                if index > 0 {
-                    self[name] = [propertyValue] + values
-                } else {
-                    self[name] = values + [propertyValue]
-                }
-            }
-        } else {
-            self[name] = values
-        }
-    }
-
-    /**
-    Removes the last value of the properties current value.
-
-    - parameter name: The name of the property.
-    */
-    public func pop(name:String) {
-        if let arrayValue = self[name] as? [AnyObject] where arrayValue.count 
> 0 {
-            var arrayOfValues = arrayValue
-            arrayOfValues.removeLast()
-            self[name] = arrayOfValues
-        }
-    }
-
-    /**
-    Removes the first value of the properties current value.
-
-    - parameter name: The name of the property.
-    */
-    public func shift(name:String) {
-        if let arrayValue = self[name] as? [AnyObject] where arrayValue.count 
> 0 {
-            var arrayOfValues = arrayValue
-            arrayOfValues.removeFirst()
-            self[name] = arrayOfValues
-        }
-    }
-
-    private func getEntitySpecificProperty(entityProperty: 
UsergridEntityProperties) -> AnyObject? {
-        var propertyValue: AnyObject? = nil
-        switch entityProperty {
-        case .UUID,.EntityType,.Name :
-            propertyValue = self.properties[entityProperty.stringValue]
-        case .Created,.Modified :
-            if let utcTimeStamp = self.properties[entityProperty.stringValue] 
as? Int {
-                propertyValue = NSDate(utcTimeStamp: utcTimeStamp.description)
-            }
-        case .Location :
-            if let locationDict = self.properties[entityProperty.stringValue] 
as? [String:Double], lat = locationDict[ENTITY_LATITUDE], long = 
locationDict[ENTITY_LONGITUDE] {
-                propertyValue = CLLocation(latitude: lat, longitude: long)
-            }
-        }
-        return propertyValue
-    }
-
-    // MARK: - CRUD Convenience Methods -
-
-    /**
-    Performs a GET on the `UsergridEntity` using the shared instance of 
`UsergridClient`.
-
-    - parameter completion: An optional completion block that, if successful, 
will contain the reloaded `UsergridEntity` object.
-    */
-    public func reload(completion: UsergridResponseCompletion? = nil) {
-        self.reload(Usergrid.sharedInstance, completion: completion)
-    }
-
-    /**
-    Performs a GET on the `UsergridEntity`.
-
-    - parameter client:     The client to use when reloading.
-    - parameter completion: An optional completion block that, if successful, 
will contain the reloaded `UsergridEntity` object.
-    */
-    public func reload(client:UsergridClient, completion: 
UsergridResponseCompletion? = nil) {
-        if let uuidOrName = self.uuidOrName {
-            client.GET(self.type, uuidOrName: uuidOrName) { (response) -> Void 
in
-                if let responseEntity = response.entity {
-                    self.copyInternalsFromEntity(responseEntity)
-                }
-                completion?(response: response)
-            }
-        } else {
-            completion?(response: UsergridResponse(client: client, errorName: 
"Entity cannot be reloaded.", errorDescription: "Entity has neither an UUID or 
specified."))
-        }
-    }
-
-    /**
-    Performs a PUT (or POST if no UUID is found) on the `UsergridEntity` using 
the shared instance of `UsergridClient`.
-
-    - parameter completion: An optional completion block that, if successful, 
will contain the updated/saved `UsergridEntity` object.
-    */
-    public func save(completion: UsergridResponseCompletion? = nil) {
-        self.save(Usergrid.sharedInstance, completion: completion)
-    }
-
-    /**
-    Performs a PUT (or POST if no UUID is found) on the `UsergridEntity`.
-
-    - parameter client:     The client to use when saving.
-    - parameter completion: An optional completion block that, if successful, 
will contain the updated/saved `UsergridEntity` object.
-    */
-    public func save(client:UsergridClient, completion: 
UsergridResponseCompletion? = nil) {
-        if let _ = self.uuid { // If UUID exists we PUT otherwise POST
-            client.PUT(self, completion: { (response) -> Void in
-                if let responseEntity = response.entity {
-                    self.copyInternalsFromEntity(responseEntity)
-                }
-                completion?(response: response)
-            })
-        } else {
-            client.POST(self, completion: { (response) -> Void in
-                if let responseEntity = response.entity {
-                    self.copyInternalsFromEntity(responseEntity)
-                }
-                completion?(response: response)
-            })
-        }
-    }
-
-    /**
-    Performs a DELETE on the `UsergridEntity` using the shared instance of the 
`UsergridClient`.
-
-    - parameter completion: An optional completion block.
-    */
-    public func remove(completion: UsergridResponseCompletion? = nil) {
-        Usergrid.sharedInstance.DELETE(self, completion: completion)
-    }
-
-    /**
-    Performs a DELETE on the `UsergridEntity`.
-
-    - parameter client:     The client to use when removing.
-    - parameter completion: An optional completion block.
-    */
-    public func remove(client:UsergridClient, completion: 
UsergridResponseCompletion? = nil) {
-        client.DELETE(self, completion: completion)
-    }
-
-    // MARK: - Asset Management -
-
-    /**
-    Uploads the given `UsergridAsset` and the data within it and creates an 
association between this `UsergridEntity` with the given `UsergridAsset` using 
the shared instance of `UsergridClient`.
-
-    - parameter asset:      The `UsergridAsset` object to upload.
-    - parameter progress:   An optional progress block to keep track of upload 
progress.
-    - parameter completion: An optional completion block.
-    */
-    public func uploadAsset(asset:UsergridAsset, 
progress:UsergridAssetRequestProgress? = nil, 
completion:UsergridAssetUploadCompletion? = nil) {
-        Usergrid.sharedInstance.uploadAsset(self, asset: asset, 
progress:progress, completion:completion)
-    }
-
-    /**
-    Uploads the given `UsergridAsset` and the data within it and creates an 
association between this `UsergridEntity` with the given `UsergridAsset`.
-
-    - parameter client:     The client to use when uploading.
-    - parameter asset:      The `UsergridAsset` object to upload.
-    - parameter progress:   An optional progress block to keep track of upload 
progress.
-    - parameter completion: An optional completion block.
-    */
-    public func uploadAsset(client:UsergridClient, asset:UsergridAsset, 
progress:UsergridAssetRequestProgress? = nil, 
completion:UsergridAssetUploadCompletion? = nil) {
-        client.uploadAsset(self, asset: asset, progress:progress, 
completion:completion)
-    }
-
-    /**
-    Downloads the `UsergridAsset` that is associated with this 
`UsergridEntity` using the shared instance of `UsergridClient`.
-
-    - parameter contentType: The content type of the data to load.
-    - parameter progress:    An optional progress block to keep track of 
download progress.
-    - parameter completion:  An optional completion block.
-    */
-    public func downloadAsset(contentType:String, 
progress:UsergridAssetRequestProgress? = nil, 
completion:UsergridAssetDownloadCompletion? = nil) {
-        Usergrid.sharedInstance.downloadAsset(self, contentType: contentType, 
progress:progress, completion: completion)
-    }
-
-    /**
-    Downloads the `UsergridAsset` that is associated with this 
`UsergridEntity`.
-
-    - parameter client:      The client to use when uploading.
-    - parameter contentType: The content type of the data to load.
-    - parameter progress:    An optional progress block to keep track of 
download progress.
-    - parameter completion:  An optional completion block.
-    */
-    public func downloadAsset(client:UsergridClient, contentType:String, 
progress:UsergridAssetRequestProgress? = nil, 
completion:UsergridAssetDownloadCompletion? = nil) {
-        client.downloadAsset(self, contentType: contentType, 
progress:progress, completion: completion)
-    }
-
-    // MARK: - Connection Management -
-
-    /**
-    Creates a relationship between this `UsergridEntity` and the given entity 
using the shared instance of `UsergridClient`.
-
-    - parameter relationship: The relationship type.
-    - parameter toEntity:     The entity to connect.
-    - parameter completion:   An optional completion block.
-    */
-    public func connect(relationship:String, toEntity:UsergridEntity, 
completion: UsergridResponseCompletion? = nil) {
-        Usergrid.sharedInstance.connect(self, relationship: relationship, to: 
toEntity, completion: completion)
-    }
-
-    /**
-    Creates a relationship between this `UsergridEntity` and the given entity.
-
-    - parameter client:       The client to use when connecting.
-    - parameter relationship: The relationship type.
-    - parameter toEntity:     The entity to connect.
-    - parameter completion:   An optional completion block.
-    */
-    public func connect(client:UsergridClient, relationship:String, 
toEntity:UsergridEntity, completion: UsergridResponseCompletion? = nil) {
-        client.connect(self, relationship: relationship, to: toEntity, 
completion: completion)
-    }
-
-    /**
-    Removes a relationship between this `UsergridEntity` and the given entity 
using the shared instance of `UsergridClient`.
-
-    - parameter relationship: The relationship type.
-    - parameter fromEntity:   The entity to disconnect.
-    - parameter completion:   An optional completion block.
-    */
-    public func disconnect(relationship:String, fromEntity:UsergridEntity, 
completion: UsergridResponseCompletion? = nil) {
-        Usergrid.sharedInstance.disconnect(self, relationship: relationship, 
from: fromEntity, completion: completion)
-    }
-
-    /**
-    Removes a relationship between this `UsergridEntity` and the given entity.
-
-    - parameter client:       The client to use when disconnecting.
-    - parameter relationship: The relationship type.
-    - parameter fromEntity:   The entity to disconnect.
-    - parameter completion:   An optional completion block.
-    */
-    public func disconnect(client:UsergridClient, relationship:String, 
fromEntity:UsergridEntity, completion: UsergridResponseCompletion? = nil) {
-        client.disconnect(self, relationship: relationship, from: fromEntity, 
completion: completion)
-    }
-
-    /**
-    Gets the `UsergridEntity` objects, if any, which are connected via the 
relationship using the shared instance of `UsergridClient`.
-
-    - parameter direction:      The direction of the connection.
-    - parameter relationship:   The relationship type.
-    - parameter query:          The optional query.
-    - parameter completion:     An optional completion block.
-    */
-    public func getConnections(direction:UsergridDirection, 
relationship:String, query:UsergridQuery?, 
completion:UsergridResponseCompletion? = nil) {
-        Usergrid.sharedInstance.getConnections(direction, entity: self, 
relationship: relationship, query:query, completion: completion)
-    }
-
-    /**
-    Gets the `UsergridEntity` objects, if any, which are connected via the 
relationship.
-
-    - parameter client:       The client to use when getting the connected 
`UsergridEntity` objects.
-    - parameter direction:    The direction of the connection.
-    - parameter relationship: The relationship type.
-    - parameter query:        The optional query.
-    - parameter completion:   An optional completion block.
-    */
-    public func getConnections(client:UsergridClient, 
direction:UsergridDirection, relationship:String, query:UsergridQuery?, 
completion:UsergridResponseCompletion? = nil) {
-        client.getConnections(direction, entity: self, relationship: 
relationship, query:query, completion: completion)
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/usergrid/blob/c638c774/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridEnums.swift
----------------------------------------------------------------------
diff --git 
a/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridEnums.swift
 
b/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridEnums.swift
deleted file mode 100644
index 1cc0c9c..0000000
--- 
a/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridEnums.swift
+++ /dev/null
@@ -1,415 +0,0 @@
-//
-//  UsergridEnums.swift
-//  UsergridSDK
-//
-//  Created by Robert Walsh on 10/21/15.
-//
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  The ASF licenses this file to You
- * under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.  For additional information regarding
- * copyright in this work, please see the NOTICE file in the top level
- * directory of this distribution.
- *
- */
-
-import Foundation
-
-/**
-An enumeration that is used to determine what the `UsergridClient` will 
fallback to depending on certain authorization conditions.
-*/
-@objc public enum UsergridAuthFallback : Int {
-
-    // MARK: - Values -
-
-    /**
-    If a non-expired user auth token exists in `UsergridClient.currentUser`, 
this token is used to authenticate all API calls.
-
-    If the API call fails, the activity is treated as a failure with an 
appropriate HTTP status code.
-
-    If a non-expired user auth token does not exist, all API calls will be 
made unauthenticated.
-    */
-    case None
-    /**
-    If a non-expired user auth token exists in `UsergridClient.currentUser`, 
this token is used to authenticate all API calls.
-
-    If the API call fails, the activity is treated as a failure with an 
appropriate HTTP status code (This behavior is identical to authFallback=.None).
-
-    If a non-expired user auth does not exist, all API calls will be made 
using stored app auth.
-    */
-    case App
-}
-
-/**
-`UsergridEntity` specific properties keys.  Note that trying to mutate the 
values of these properties will not be allowed in most cases.
-*/
-@objc public enum UsergridEntityProperties : Int {
-
-    // MARK: - Values -
-
-    /// Corresponds to the property 'type'
-    case EntityType
-    /// Corresponds to the property 'uuid'
-    case UUID
-    /// Corresponds to the property 'name'
-    case Name
-    /// Corresponds to the property 'created'
-    case Created
-    /// Corresponds to the property 'modified'
-    case Modified
-    /// Corresponds to the property 'location'
-    case Location
-
-    // MARK: - Methods -
-
-    /**
-    Gets the corresponding `UsergridEntityProperties` from a string if it's 
valid.
-
-    - parameter stringValue: The string value to convert.
-
-    - returns: The corresponding `UsergridEntityProperties` or nil.
-    */
-    public static func fromString(stringValue: String) -> 
UsergridEntityProperties? {
-        switch stringValue.lowercaseString {
-            case ENTITY_TYPE: return .EntityType
-            case ENTITY_UUID: return .UUID
-            case ENTITY_NAME: return .Name
-            case ENTITY_CREATED: return .Created
-            case ENTITY_MODIFIED: return .Modified
-            case ENTITY_LOCATION: return .Location
-            default: return nil
-        }
-    }
-
-    /// Returns the string value.
-    public var stringValue: String {
-        switch self {
-            case .EntityType: return ENTITY_TYPE
-            case .UUID: return ENTITY_UUID
-            case .Name: return ENTITY_NAME
-            case .Created: return ENTITY_CREATED
-            case .Modified: return ENTITY_MODIFIED
-            case .Location: return ENTITY_LOCATION
-        }
-    }
-
-    /**
-    Determines if the `UsergridEntityProperties` is mutable for the given 
entity.
-
-    - parameter entity: The entity to check.
-
-    - returns: If the `UsergridEntityProperties` is mutable for the given 
entity
-    */
-    public func isMutableForEntity(entity:UsergridEntity) -> Bool {
-        switch self {
-            case .EntityType,.UUID,.Created,.Modified: return false
-            case .Location: return true
-            case .Name: return entity.isUser
-        }
-    }
-}
-
-/**
-`UsergridDeviceProperties` specific properties keys.  Note that trying to 
mutate the values of these properties will not be allowed in most cases.
-*/
-@objc public enum UsergridDeviceProperties : Int {
-
-    // MARK: - Values -
-
-    /// Corresponds to the property 'deviceModel'
-    case Model
-    /// Corresponds to the property 'devicePlatform'
-    case Platform
-    /// Corresponds to the property 'deviceOSVersion'
-    case OSVersion
-
-    // MARK: - Methods -
-
-    /**
-    Gets the corresponding `UsergridDeviceProperties` from a string if it's 
valid.
-
-    - parameter stringValue: The string value to convert.
-
-    - returns: The corresponding `UsergridDeviceProperties` or nil.
-    */
-    public static func fromString(stringValue: String) -> 
UsergridDeviceProperties? {
-        switch stringValue.lowercaseString {
-            case DEVICE_MODEL: return .Model
-            case DEVICE_PLATFORM: return .Platform
-            case DEVICE_OSVERSION: return .OSVersion
-            default: return nil
-        }
-    }
-
-    /// Returns the string value.
-    public var stringValue: String {
-        switch self {
-            case .Model: return DEVICE_MODEL
-            case .Platform: return DEVICE_PLATFORM
-            case .OSVersion: return DEVICE_OSVERSION
-        }
-    }
-}
-
-/**
-`UsergridUser` specific properties keys.
-*/
-@objc public enum UsergridUserProperties: Int {
-
-    // MARK: - Values -
-
-    /// Corresponds to the property 'name'
-    case Name
-    /// Corresponds to the property 'username'
-    case Username
-    /// Corresponds to the property 'password'
-    case Password
-    /// Corresponds to the property 'email'
-    case Email
-    /// Corresponds to the property 'age'
-    case Age
-    /// Corresponds to the property 'activated'
-    case Activated
-    /// Corresponds to the property 'disabled'
-    case Disabled
-    /// Corresponds to the property 'picture'
-    case Picture
-
-    // MARK: - Methods -
-
-    /**
-    Gets the corresponding `UsergridUserProperties` from a string if it's 
valid.
-
-    - parameter stringValue: The string value to convert.
-
-    - returns: The corresponding `UsergridUserProperties` or nil.
-    */
-    public static func fromString(stringValue: String) -> 
UsergridUserProperties? {
-        switch stringValue.lowercaseString {
-            case ENTITY_NAME: return .Name
-            case USER_USERNAME: return .Username
-            case USER_PASSWORD: return .Password
-            case USER_EMAIL: return .Email
-            case USER_AGE: return .Age
-            case USER_ACTIVATED: return .Activated
-            case USER_DISABLED: return .Disabled
-            case USER_PICTURE: return .Picture
-            default: return nil
-        }
-    }
-
-    /// Returns the string value.
-    public var stringValue: String {
-        switch self {
-            case .Name: return ENTITY_NAME
-            case .Username: return USER_USERNAME
-            case .Password: return USER_PASSWORD
-            case .Email: return USER_EMAIL
-            case .Age: return USER_AGE
-            case .Activated: return USER_ACTIVATED
-            case .Disabled: return USER_DISABLED
-            case .Picture: return USER_PICTURE
-        }
-    }
-}
-
-/**
-`UsergridQuery` specific operators.
-*/
-@objc public enum UsergridQueryOperator: Int {
-
-    // MARK: - Values -
-
-    /// '='
-    case Equal
-    /// '>'
-    case GreaterThan
-    /// '>='
-    case GreaterThanEqualTo
-    /// '<'
-    case LessThan
-    /// '<='
-    case LessThanEqualTo
-
-    // MARK: - Methods -
-
-    /**
-    Gets the corresponding `UsergridQueryOperator` from a string if it's valid.
-
-    - parameter stringValue: The string value to convert.
-
-    - returns: The corresponding `UsergridQueryOperator` or nil.
-    */
-    public static func fromString(stringValue: String) -> 
UsergridQueryOperator? {
-        switch stringValue.lowercaseString {
-            case UsergridQuery.EQUAL: return .Equal
-            case UsergridQuery.GREATER_THAN: return .GreaterThan
-            case UsergridQuery.GREATER_THAN_EQUAL_TO: return 
.GreaterThanEqualTo
-            case UsergridQuery.LESS_THAN: return .LessThan
-            case UsergridQuery.LESS_THAN_EQUAL_TO: return .LessThanEqualTo
-            default: return nil
-        }
-    }
-
-    /// Returns the string value.
-    public var stringValue: String {
-        switch self {
-            case .Equal: return UsergridQuery.EQUAL
-            case .GreaterThan: return UsergridQuery.GREATER_THAN
-            case .GreaterThanEqualTo: return 
UsergridQuery.GREATER_THAN_EQUAL_TO
-            case .LessThan: return UsergridQuery.LESS_THAN
-            case .LessThanEqualTo: return UsergridQuery.LESS_THAN_EQUAL_TO
-        }
-    }
-}
-
-/**
-`UsergridQuery` specific sort orders.
-*/
-@objc public enum UsergridQuerySortOrder: Int {
-
-    // MARK: - Values -
-
-    /// Sort order is ascending.
-    case Asc
-    /// Sort order is descending.
-    case Desc
-
-    // MARK: - Methods -
-
-    /**
-    Gets the corresponding `UsergridQuerySortOrder` from a string if it's 
valid.
-
-    - parameter stringValue: The string value to convert.
-
-    - returns: The corresponding `UsergridQuerySortOrder` or nil.
-    */
-    public static func fromString(stringValue: String) -> 
UsergridQuerySortOrder? {
-        switch stringValue.lowercaseString {
-            case UsergridQuery.ASC: return .Asc
-            case UsergridQuery.DESC: return .Desc
-            default: return nil
-        }
-    }
-
-    /// Returns the string value.
-    public var stringValue: String {
-        switch self {
-            case .Asc: return UsergridQuery.ASC
-            case .Desc: return UsergridQuery.DESC
-        }
-    }
-}
-
-/**
-`UsergridAsset` image specific content types.
-*/
-@objc public enum UsergridImageContentType : Int {
-
-    // MARK: - Values -
-
-    /// Content type: 'image/png'
-    case Png
-    /// Content type: 'image/jpeg'
-    case Jpeg
-
-    // MARK: - Methods -
-
-    /// Returns the string value.
-    public var stringValue: String {
-        switch self {
-            case .Png: return ASSET_IMAGE_PNG
-            case .Jpeg: return ASSET_IMAGE_JPEG
-        }
-    }
-}
-
-/**
- An enumeration that is used when getting connections to entity objects. Used 
to determine which the direction of the connection is wanted.
- */
-@objc public enum UsergridDirection : Int {
-
-    // MARK: - Values -
-
-    /// To get the entities that have created a connection to an entity. aka 
`connecting`
-    case In
-
-    /// To get the entities an entity has connected to. aka `connections`
-    case Out
-
-    // MARK: - Methods -
-
-    /// Returns the connection value.
-    public var connectionValue: String {
-        switch self {
-            case .In: return CONNECTION_TYPE_IN
-            case .Out: return CONNECTION_TYPE_OUT
-        }
-    }
-}
-
-/**
- An enumeration for defining the HTTP methods used by Usergrid.
- */
-@objc public enum UsergridHttpMethod : Int {
-
-    /// GET
-    case Get
-
-    /// PUT
-    case Put
-
-    /// POST
-    case Post
-
-    /// DELETE
-    case Delete
-
-    /// Returns the string value.
-    public var stringValue: String {
-        switch self {
-            case .Get: return "GET"
-            case .Put: return "PUT"
-            case .Post: return "POST"
-            case .Delete: return "DELETE"
-        }
-    }
-}
-
-let ENTITY_TYPE = "type"
-let ENTITY_UUID = "uuid"
-let ENTITY_NAME = "name"
-let ENTITY_CREATED = "created"
-let ENTITY_MODIFIED = "modified"
-let ENTITY_LOCATION = "location"
-let ENTITY_LATITUDE = "latitude"
-let ENTITY_LONGITUDE = "longitude"
-
-let USER_USERNAME = "username"
-let USER_PASSWORD = "password"
-let USER_EMAIL = "email"
-let USER_AGE = "age"
-let USER_ACTIVATED = "activated"
-let USER_DISABLED = "disabled"
-let USER_PICTURE = "picture"
-
-let DEVICE_MODEL = "deviceModel"
-let DEVICE_PLATFORM = "devicePlatform"
-let DEVICE_OSVERSION = "devicePlatform"
-
-let ASSET_IMAGE_PNG = "image/png"
-let ASSET_IMAGE_JPEG = "image/jpeg"
-
-let CONNECTION_TYPE_IN = "connecting"
-let CONNECTION_TYPE_OUT = "connections"

http://git-wip-us.apache.org/repos/asf/usergrid/blob/c638c774/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridExtensions.swift
----------------------------------------------------------------------
diff --git 
a/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridExtensions.swift
 
b/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridExtensions.swift
deleted file mode 100644
index 050145c..0000000
--- 
a/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridExtensions.swift
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-//  UsergridExtensions.swift
-//  UsergridSDK
-//
-//  Created by Robert Walsh on 10/6/15.
-//
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  The ASF licenses this file to You
- * under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.  For additional information regarding
- * copyright in this work, please see the NOTICE file in the top level
- * directory of this distribution.
- *
- */
-
-import Foundation
-
-internal extension NSDate {
-    convenience init(utcTimeStamp: String) {
-        self.init(timeIntervalSince1970: (utcTimeStamp as 
NSString).doubleValue / 1000 )
-    }
-    func utcTimeStamp() -> Int {
-        return Int(self.timeIntervalSince1970 * 1000)
-    }
-}
-
-internal extension String {
-    func isUuid() -> Bool {
-        return (NSUUID(UUIDString: self) != nil) ? true : false
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/usergrid/blob/c638c774/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridFileMetaData.swift
----------------------------------------------------------------------
diff --git 
a/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridFileMetaData.swift
 
b/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridFileMetaData.swift
deleted file mode 100644
index c3e7f52..0000000
--- 
a/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridFileMetaData.swift
+++ /dev/null
@@ -1,114 +0,0 @@
-//
-//  UsergridFileMetaData.swift
-//  UsergridSDK
-//
-//  Created by Robert Walsh on 10/6/15.
-//
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  The ASF licenses this file to You
- * under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.  For additional information regarding
- * copyright in this work, please see the NOTICE file in the top level
- * directory of this distribution.
- *
- */
-
-import Foundation
-
-/**
-`UsergridFileMetaData` is a helper class for dealing with reading 
`UsergridEntity` file meta data.
-*/
-public class UsergridFileMetaData : NSObject,NSCoding {
-
-    internal static let FILE_METADATA = "file-metadata"
-
-    // MARK: - Instance Properties -
-
-    /// The eTag.
-    public let eTag: String?
-
-    /// The check sum.
-    public let checkSum: String?
-
-    /// The content type associated with the file data.
-    public let contentType: String?
-
-    /// The content length of the file data.
-    public let contentLength: Int
-
-    /// The last modified time stamp.
-    public let lastModifiedTimeStamp: Int
-
-    /// The `NSDate` object corresponding to the last modified time stamp.
-    public let lastModifiedDate: NSDate?
-
-    // MARK: - Initialization -
-
-    /**
-    Designated initializer for `UsergridFileMetaData` objects.
-
-    - parameter fileMetaDataJSON: The file meta data JSON dictionary.
-
-    - returns: A new instance of `UsergridFileMetaData`.
-    */
-    public init(fileMetaDataJSON:[String:AnyObject]) {
-        self.eTag = fileMetaDataJSON["etag"] as? String
-        self.checkSum = fileMetaDataJSON["checksum"] as? String
-        self.contentType = fileMetaDataJSON["content-type"] as? String
-        self.contentLength = fileMetaDataJSON["content-length"] as? Int ?? 0
-        self.lastModifiedTimeStamp = fileMetaDataJSON["last-modified"] as? Int 
?? 0
-
-        if self.lastModifiedTimeStamp > 0 {
-            self.lastModifiedDate = NSDate(utcTimeStamp: 
self.lastModifiedTimeStamp.description)
-        } else {
-            self.lastModifiedDate = nil
-        }
-    }
-
-    // MARK: - NSCoding -
-
-    /**
-    NSCoding protocol initializer.
-
-    - parameter aDecoder: The decoder.
-
-    - returns: A decoded `UsergridUser` object.
-    */
-    required public init?(coder aDecoder: NSCoder) {
-        self.eTag = aDecoder.decodeObjectForKey("etag") as? String
-        self.checkSum = aDecoder.decodeObjectForKey("checksum") as? String
-        self.contentType = aDecoder.decodeObjectForKey("content-type") as? 
String
-        self.contentLength = aDecoder.decodeIntegerForKey("content-length") ?? 0
-        self.lastModifiedTimeStamp = 
aDecoder.decodeIntegerForKey("last-modified") ?? 0
-
-        if self.lastModifiedTimeStamp > 0 {
-            self.lastModifiedDate = NSDate(utcTimeStamp: 
self.lastModifiedTimeStamp.description)
-        } else {
-            self.lastModifiedDate = nil
-        }
-    }
-
-    /**
-     NSCoding protocol encoder.
-
-     - parameter aCoder: The encoder.
-     */
-    public func encodeWithCoder(aCoder: NSCoder) {
-        aCoder.encodeObject(self.eTag, forKey: "etag")
-        aCoder.encodeObject(self.checkSum, forKey: "checksum")
-        aCoder.encodeObject(self.contentType, forKey: "content-type")
-        aCoder.encodeInteger(self.contentLength, forKey: "content-length")
-        aCoder.encodeInteger(self.lastModifiedTimeStamp, forKey: 
"last-modified")
-    }
-}

http://git-wip-us.apache.org/repos/asf/usergrid/blob/c638c774/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridKeychainHelpers.swift
----------------------------------------------------------------------
diff --git 
a/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridKeychainHelpers.swift
 
b/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridKeychainHelpers.swift
deleted file mode 100644
index 2d7dee6..0000000
--- 
a/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridKeychainHelpers.swift
+++ /dev/null
@@ -1,148 +0,0 @@
-//
-//  UsergridKeychainHelpers.swift
-//  UsergridSDK
-//
-//  Created by Robert Walsh on 12/21/15.
-//
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  The ASF licenses this file to You
- * under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.  For additional information regarding
- * copyright in this work, please see the NOTICE file in the top level
- * directory of this distribution.
- *
- */
-
-import Foundation
-
-#if os(iOS) || os(tvOS) || os(watchOS)
-import UIKit
-#endif
-
-private let USERGRID_KEYCHAIN_NAME = "Usergrid"
-private let USERGRID_DEVICE_KEYCHAIN_SERVICE = "DeviceUUID"
-private let USERGRID_CURRENT_USER_KEYCHAIN_SERVICE = "CurrentUser"
-
-private func usergridGenericKeychainItem() -> [String:AnyObject] {
-    var keychainItem: [String:AnyObject] = [:]
-    keychainItem[kSecClass as String] = kSecClassGenericPassword as String
-    keychainItem[kSecAttrAccessible as String] = kSecAttrAccessibleAlways as 
String
-    keychainItem[kSecAttrAccount as String] = USERGRID_KEYCHAIN_NAME
-    return keychainItem
-}
-
-internal extension UsergridDevice {
-
-    static func deviceKeychainItem() -> [String:AnyObject] {
-        var keychainItem = usergridGenericKeychainItem()
-        keychainItem[kSecAttrService as String] = 
USERGRID_DEVICE_KEYCHAIN_SERVICE
-        return keychainItem
-    }
-
-    static func createNewUsergridKeychainUUID() -> String {
-
-        #if os(watchOS) || os(OSX)
-            let usergridUUID = NSUUID().UUIDString
-        #elseif os(iOS) || os(tvOS)
-            let usergridUUID = 
UIDevice.currentDevice().identifierForVendor?.UUIDString ?? NSUUID().UUIDString
-        #endif
-
-        var keychainItem = UsergridDevice.deviceKeychainItem()
-        keychainItem[kSecValueData as String] = (usergridUUID as 
NSString).dataUsingEncoding(NSUTF8StringEncoding)
-        SecItemAdd(keychainItem, nil)
-        return usergridUUID
-    }
-
-    static func usergridDeviceUUID() -> String {
-        var queryAttributes = UsergridDevice.deviceKeychainItem()
-        queryAttributes[kSecReturnData as String] = kCFBooleanTrue as Bool
-        queryAttributes[kSecReturnAttributes as String] = kCFBooleanTrue as 
Bool
-        var result: AnyObject?
-        let status = withUnsafeMutablePointer(&result) { 
SecItemCopyMatching(queryAttributes, UnsafeMutablePointer($0)) }
-        if status == errSecSuccess {
-            if let resultDictionary = result as? NSDictionary {
-                if let resultData = resultDictionary[kSecValueData as String] 
as? NSData {
-                    if let keychainUUID = String(data: resultData, encoding: 
NSUTF8StringEncoding) {
-                        return keychainUUID
-                    }
-                }
-            }
-        }
-        return UsergridDevice.createNewUsergridKeychainUUID()
-    }
-}
-
-internal extension UsergridUser {
-
-    static func userKeychainItem(client:UsergridClient) -> [String:AnyObject] {
-        var keychainItem = usergridGenericKeychainItem()
-        keychainItem[kSecAttrService as String] = 
USERGRID_CURRENT_USER_KEYCHAIN_SERVICE + "." + client.appId + "." + client.orgId
-        return keychainItem
-    }
-
-    static func getCurrentUserFromKeychain(client:UsergridClient) -> 
UsergridUser? {
-        var queryAttributes = UsergridUser.userKeychainItem(client)
-        queryAttributes[kSecReturnData as String] = kCFBooleanTrue as Bool
-        queryAttributes[kSecReturnAttributes as String] = kCFBooleanTrue as 
Bool
-
-        var result: AnyObject?
-        let status = withUnsafeMutablePointer(&result) { 
SecItemCopyMatching(queryAttributes, UnsafeMutablePointer($0)) }
-        if status == errSecSuccess {
-            if let resultDictionary = result as? NSDictionary {
-                if let resultData = resultDictionary[kSecValueData as String] 
as? NSData {
-                    if let currentUser = 
NSKeyedUnarchiver.unarchiveObjectWithData(resultData) as? UsergridUser {
-                        return currentUser
-                    }
-                }
-            }
-        }
-        return nil
-    }
-
-    static func saveCurrentUserKeychainItem(client:UsergridClient, 
currentUser:UsergridUser) {
-        var queryAttributes = UsergridUser.userKeychainItem(client)
-        queryAttributes[kSecReturnData as String] = kCFBooleanTrue as Bool
-        queryAttributes[kSecReturnAttributes as String] = kCFBooleanTrue as 
Bool
-
-        if SecItemCopyMatching(queryAttributes,nil) == errSecSuccess // Do we 
need to update keychain item or add a new one.
-        {
-            let attributesToUpdate = [kSecValueData as 
String:NSKeyedArchiver.archivedDataWithRootObject(currentUser)]
-            let updateStatus = 
SecItemUpdate(UsergridUser.userKeychainItem(client), attributesToUpdate)
-            if updateStatus != errSecSuccess {
-                print("Error updating current user data to keychain!")
-            }
-        }
-        else
-        {
-            var keychainItem = UsergridUser.userKeychainItem(client)
-            keychainItem[kSecValueData as String] = 
NSKeyedArchiver.archivedDataWithRootObject(currentUser)
-            let status = SecItemAdd(keychainItem, nil)
-            if status != errSecSuccess {
-                print("Error adding current user data to keychain!")
-            }
-        }
-    }
-
-    static func deleteCurrentUserKeychainItem(client:UsergridClient) {
-        var queryAttributes = UsergridUser.userKeychainItem(client)
-        queryAttributes[kSecReturnData as String] = kCFBooleanFalse as Bool
-        queryAttributes[kSecReturnAttributes as String] = kCFBooleanFalse as 
Bool
-        if SecItemCopyMatching(queryAttributes,nil) == errSecSuccess {
-            let deleteStatus = SecItemDelete(queryAttributes)
-            if deleteStatus != errSecSuccess {
-                print("Error deleting current user data to keychain!")
-            }
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/usergrid/blob/c638c774/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridQuery.swift
----------------------------------------------------------------------
diff --git 
a/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridQuery.swift
 
b/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridQuery.swift
deleted file mode 100644
index 9dfd10a..0000000
--- 
a/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridQuery.swift
+++ /dev/null
@@ -1,530 +0,0 @@
-//
-//  UsergridQuery.swift
-//  UsergridSDK
-//
-//  Created by Robert Walsh on 7/22/15.
-//
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  The ASF licenses this file to You
- * under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.  For additional information regarding
- * copyright in this work, please see the NOTICE file in the top level
- * directory of this distribution.
- *
- */
-
-import Foundation
-
-/**
- `UsergridQuery` is builder class used to construct filtered requests to 
Usergrid.
- 
- `UsergridQuery` objects are then passed to `UsergridClient` or `Usergrid` 
methods which support `UsergridQuery` as a parameter are .GET(), .PUT(), and 
.DELETE().
- */
-public class UsergridQuery : NSObject,NSCopying {
-    
-    // MARK: - Initialization -
-    
-    /**
-    Desingated initializer for `UsergridQuery` objects.
-    
-    - parameter collectionName: The collection name or `type` of entities you 
want to query.
-    
-    - returns: A new instance of `UsergridQuery`.
-    */
-    public init(_ collectionName: String? = nil) {
-        self.collectionName = collectionName
-    }
-    
-    // MARK: - NSCopying -
-    
-    /**
-    See the NSCopying protocol.
-    
-    - parameter zone: Ignored
-    
-    - returns: Returns a new instance that’s a copy of the receiver.
-    */
-    public func copyWithZone(zone: NSZone) -> AnyObject {
-        let queryCopy = UsergridQuery(self.collectionName)
-        queryCopy.requirementStrings = NSArray(array:self.requirementStrings, 
copyItems: true) as! [String]
-        queryCopy.urlTerms = NSArray(array:self.urlTerms, copyItems: true) as! 
[String]
-        for (key,value) in self.orderClauses {
-            queryCopy.orderClauses[key] = value
-        }
-        queryCopy.limit = self.limit
-        queryCopy.cursor = self.cursor
-        return queryCopy
-    }
-    
-    // MARK: - Building -
-    
-    /**
-    Constructs the string that should be appeneded to the end of the URL as a 
query.
-    
-    - parameter autoURLEncode: Automatically encode the constructed string.
-    
-    - returns: The constructed URL query sting.
-    */
-    public func build(autoURLEncode: Bool = true) -> String {
-        return self.constructURLAppend(autoURLEncode)
-    }
-    
-    // MARK: - Builder Methods -
-    
-    /**
-    Contains. Query: where term contains 'val%'.
-    
-    - parameter term:  The term.
-    - parameter value: The value.
-    
-    - returns: `Self`
-    */
-    public func containsString(term: String, value: String) -> Self { return 
self.containsWord(term, value: value) }
-    
-    /**
-     Contains. Query: where term contains 'val%'.
-     
-     - parameter term:  The term.
-     - parameter value: The value.
-     
-     - returns: `Self`
-     */
-    public func containsWord(term: String, value: String) -> Self { return 
self.addRequirement(term + UsergridQuery.SPACE + UsergridQuery.CONTAINS + 
UsergridQuery.SPACE + ((value.isUuid()) ? UsergridQuery.EMPTY_STRING : 
UsergridQuery.APOSTROPHE) + value + ((value.isUuid()) ? 
UsergridQuery.EMPTY_STRING : UsergridQuery.APOSTROPHE)) }
-    
-    /**
-     Sort ascending. Query:. order by term asc.
-     
-     - parameter term: The term.
-     
-     - returns: `Self`
-     */
-    public func ascending(term: String) -> Self { return self.asc(term) }
-    
-    /**
-     Sort ascending. Query:. order by term asc.
-     
-     - parameter term: The term.
-     
-     - returns: `Self`
-     */
-    public func asc(term: String) -> Self { return self.sort(term, sortOrder: 
UsergridQuerySortOrder.Asc) }
-    
-    /**
-     Sort descending. Query: order by term desc
-     
-     - parameter term: The term.
-     
-     - returns: `Self`
-     */
-    public func descending(term: String) -> Self { return self.desc(term) }
-    
-    /**
-     Sort descending. Query: order by term desc
-     
-     - parameter term: The term.
-     
-     - returns: `Self`
-     */
-    public func desc(term: String) -> Self { return self.sort(term, sortOrder: 
UsergridQuerySortOrder.Desc) }
-    
-    /**
-     Filter (or Equal-to). Query: where term = 'value'.
-     
-     - parameter term:  The term.
-     - parameter value: The value.
-     
-     - returns: `Self`
-     */
-    public func filter(term: String, value: AnyObject) -> Self { return 
self.eq(term, value: value) }
-    
-    /**
-     Equal-to. Query: where term = 'value'.
-     
-     - parameter term:  The term.
-     - parameter value: The value.
-     
-     - returns: `Self`
-     */
-    public func equals(term: String, value: AnyObject) -> Self { return 
self.eq(term, value: value) }
-    
-    /**
-     Equal-to. Query: where term = 'value'.
-     
-     - parameter term:  The term.
-     - parameter value: The value.
-     
-     - returns: `Self`
-     */
-    public func eq(term: String, value: AnyObject) -> Self { return 
self.addOperationRequirement(term, operation:.Equal, value: value) }
-    
-    /**
-     Greater-than. Query: where term > 'value'.
-     
-     - parameter term:  The term.
-     - parameter value: The value.
-     
-     - returns: `Self`
-     */
-    public func greaterThan(term: String, value: AnyObject) -> Self { return 
self.gt(term, value: value) }
-    
-    /**
-     Greater-than. Query: where term > 'value'.
-     
-     - parameter term:  The term.
-     - parameter value: The value.
-     
-     - returns: `Self`
-     */
-    public func gt(term: String, value: AnyObject) -> Self { return 
self.addOperationRequirement(term, operation:.GreaterThan, value: value) }
-    
-    /**
-     Greater-than-or-equal-to. Query: where term >= 'value'.
-     
-     - parameter term:  The term.
-     - parameter value: The value.
-     
-     - returns: `Self`
-     */
-    public func greaterThanOrEqual(term: String, value: AnyObject) -> Self { 
return self.gte(term, value: value) }
-    
-    /**
-     Greater-than-or-equal-to. Query: where term >= 'value'.
-     
-     - parameter term:  The term.
-     - parameter value: The value.
-     
-     - returns: `Self`
-     */
-    public func gte(term: String, value: AnyObject) -> Self { return 
self.addOperationRequirement(term, operation:.GreaterThanEqualTo, value: value) 
}
-    
-    /**
-     Less-than. Query: where term < 'value'.
-     
-     - parameter term:  The term.
-     - parameter value: The value.
-     
-     - returns: `Self`
-     */
-    public func lessThan(term: String, value: AnyObject) -> Self { return 
self.lt(term, value: value) }
-    
-    /**
-     Less-than. Query: where term < 'value'.
-     
-     - parameter term:  The term.
-     - parameter value: The value.
-     
-     - returns: `Self`
-     */
-    public func lt(term: String, value: AnyObject) -> Self { return 
self.addOperationRequirement(term, operation:.LessThan, value: value) }
-    
-    /**
-     Less-than-or-equal-to. Query: where term <= 'value'.
-     
-     - parameter term:  The term.
-     - parameter value: The value.
-     
-     - returns: `Self`
-     */
-    public func lessThanOrEqual(term: String, value: AnyObject) -> Self { 
return self.lte(term, value: value) }
-    
-    /**
-     Less-than-or-equal-to. Query: where term <= 'value'.
-     
-     - parameter term:  The term.
-     - parameter value: The value.
-     
-     - returns: `Self`
-     */
-    public func lte(term: String, value: AnyObject) -> Self { return 
self.addOperationRequirement(term, operation:.LessThanEqualTo, value: value) }
-    
-    /**
-     Contains. Query: location within val of lat, long.
-     
-     - parameter distance:  The distance from the latitude and longitude.
-     - parameter latitude:  The latitude.
-     - parameter longitude: The longitude.
-     
-     - returns: `Self`
-     */
-    public func locationWithin(distance: Float, latitude: Float, longitude: 
Float) -> Self {
-        return self.addRequirement(UsergridQuery.LOCATION + 
UsergridQuery.SPACE + UsergridQuery.WITHIN + UsergridQuery.SPACE + 
distance.description + UsergridQuery.SPACE + UsergridQuery.OF + 
UsergridQuery.SPACE + latitude.description + UsergridQuery.COMMA + 
longitude.description )
-    }
-    
-    /**
-     Joining operation to combine conditional queries.
-     
-     - returns: `Self`
-     */
-    public func or() -> Self {
-        if !self.requirementStrings.first!.isEmpty {
-            self.requirementStrings.insert(UsergridQuery.OR, atIndex: 0)
-            self.requirementStrings.insert(UsergridQuery.EMPTY_STRING, 
atIndex: 0)
-        }
-        return self
-    }
-    
-    /**
-     Not operation for conditional queries.
-     
-     - returns: `Self`
-     */
-    public func not() -> Self {
-        if !self.requirementStrings.first!.isEmpty {
-            self.requirementStrings.insert(UsergridQuery.NOT, atIndex: 0)
-            self.requirementStrings.insert(UsergridQuery.EMPTY_STRING, 
atIndex: 0)
-        }
-        return self
-    }
-    
-    /**
-     Sort. Query: order by term `sortOrder`
-     
-     - parameter term:       The term.
-     - parameter sortOrder:  The order.
-     
-     - returns: `Self`
-     */
-    public func sort(term: String, sortOrder: UsergridQuerySortOrder) -> Self {
-        self.orderClauses[term] = sortOrder
-        return self
-    }
-    
-    /**
-     Sets the collection name.
-     
-     - parameter collectionName: The new collection name.
-     
-     - returns: `Self`
-     */
-    public func collection(collectionName: String) -> Self {
-        self.collectionName = collectionName
-        return self
-    }
-    
-    /**
-     Sets the limit on the query.  Default limit is 10.
-     
-     - parameter limit: The limit.
-     
-     - returns: `Self`
-     */
-    public func limit(limit: Int) -> Self {
-        self.limit = limit
-        return self
-    }
-    
-    /**
-     Adds a preconstructed query string as a requirement onto the query.
-     
-     - parameter value: The query string.
-     
-     - returns: `Self`
-     */
-    public func ql(value: String) -> Self {
-        return self.addRequirement(value)
-    }
-    
-    /**
-     Sets the cursor of the query used internally by Usergrid's APIs.
-     
-     - parameter value: The cursor.
-     
-     - returns: `Self`
-     */
-    public func cursor(value: String?) -> Self {
-        self.cursor = value
-        return self
-    }
-    
-    /**
-     Adds a URL term that will be added next to the query string when 
constructing the URL append.
-     
-     - parameter term:        The term.
-     - parameter equalsValue: The value.
-     
-     - returns: `Self`
-     */
-    public func urlTerm(term: String, equalsValue: String) -> Self {
-        if (term as NSString).isEqualToString(UsergridQuery.QL) {
-            self.ql(equalsValue)
-        } else {
-            self.urlTerms.append(term + 
UsergridQueryOperator.Equal.stringValue + equalsValue)
-        }
-        return self
-    }
-    
-    /**
-     Adds a string requirement to the query.
-     
-     - parameter term:        The term.
-     - parameter operation:   The operation.
-     - parameter stringValue: The string value.
-     
-     - returns: `Self`
-     */
-    public func addOperationRequirement(term: String, operation: 
UsergridQueryOperator, stringValue: String) -> Self {
-        return 
self.addOperationRequirement(term,operation:operation,value:stringValue)
-    }
-    
-    /**
-     Adds a integer requirement to the query.
-     
-     - parameter term:      The term.
-     - parameter operation: The operation.
-     - parameter intValue:  The integer value.
-     
-     - returns: `Self`
-     */
-    public func addOperationRequirement(term: String, operation: 
UsergridQueryOperator, intValue: Int) -> Self {
-        return 
self.addOperationRequirement(term,operation:operation,value:intValue)
-    }
-    
-    private func addRequirement(requirement: String) -> Self {
-        var requirementString: String = 
self.requirementStrings.removeAtIndex(0)
-        if !requirementString.isEmpty {
-            requirementString += UsergridQuery.SPACE + UsergridQuery.AND + 
UsergridQuery.SPACE
-        }
-        requirementString += requirement
-        self.requirementStrings.insert(requirementString, atIndex: 0)
-        return self
-    }
-    
-    private func addOperationRequirement(term: String, operation: 
UsergridQueryOperator, value: AnyObject) -> Self {
-        if value is String {
-            return self.addRequirement(term + UsergridQuery.SPACE + 
operation.stringValue + UsergridQuery.SPACE + ((value.description.isUuid()) ? 
UsergridQuery.EMPTY_STRING : UsergridQuery.APOSTROPHE) + value.description + 
((value.description.isUuid()) ? UsergridQuery.EMPTY_STRING : 
UsergridQuery.APOSTROPHE) )
-        } else {
-            return self.addRequirement(term + UsergridQuery.SPACE + 
operation.stringValue + UsergridQuery.SPACE + value.description)
-        }
-    }
-    
-    private func constructOrderByString() -> String {
-        var orderByString = UsergridQuery.EMPTY_STRING
-        if !self.orderClauses.isEmpty {
-            var combinedClausesArray: [String] = []
-            for (key,value) in self.orderClauses {
-                combinedClausesArray.append(key + UsergridQuery.SPACE + 
value.stringValue)
-            }
-            for index in 0..<combinedClausesArray.count {
-                if index > 0 {
-                    orderByString += UsergridQuery.COMMA
-                }
-                orderByString += combinedClausesArray[index]
-            }
-            if !orderByString.isEmpty {
-                orderByString = UsergridQuery.SPACE + UsergridQuery.ORDER_BY + 
UsergridQuery.SPACE + orderByString
-            }
-        }
-        return orderByString
-    }
-    
-    private func constructURLTermsString() -> String {
-        return (self.urlTerms as 
NSArray).componentsJoinedByString(UsergridQuery.AMPERSAND)
-    }
-    
-    private func constructRequirementString() -> String {
-        var requirementsString = UsergridQuery.EMPTY_STRING
-        var requirementStrings = self.requirementStrings
-        
-        // If the first requirement is empty lets remove it.
-        if let firstRequirement = requirementStrings.first where 
firstRequirement.isEmpty {
-            requirementStrings.removeFirst()
-        }
-        
-        // If the first requirement now is a conditional separator then we 
should remove it so its not placed at the end of the constructed string.
-        if let firstRequirement = requirementStrings.first where 
firstRequirement == UsergridQuery.OR || firstRequirement == UsergridQuery.NOT {
-            requirementStrings.removeFirst()
-        }
-        
-        requirementsString = (requirementStrings.reverse() as 
NSArray).componentsJoinedByString(UsergridQuery.SPACE)
-        return requirementsString
-    }
-    
-    private func constructURLAppend(autoURLEncode: Bool = true) -> String {
-        var urlAppend = UsergridQuery.EMPTY_STRING
-        if self.limit != UsergridQuery.LIMIT_DEFAULT {
-            urlAppend += "\(UsergridQuery.LIMIT)=\(self.limit.description)"
-        }
-        let urlTermsString = self.constructURLTermsString()
-        if !urlTermsString.isEmpty {
-            if !urlAppend.isEmpty {
-                urlAppend += UsergridQuery.AMPERSAND
-            }
-            urlAppend += urlTermsString
-        }
-        if let cursorString = self.cursor where !cursorString.isEmpty {
-            if !urlAppend.isEmpty {
-                urlAppend += UsergridQuery.AMPERSAND
-            }
-            urlAppend += "\(UsergridQuery.CURSOR)=\(cursorString)"
-        }
-        
-        var requirementsString = self.constructRequirementString()
-        let orderByString = self.constructOrderByString()
-        if !orderByString.isEmpty {
-            requirementsString += orderByString
-        }
-        if !requirementsString.isEmpty {
-            if autoURLEncode {
-                if let encodedRequirementsString = 
requirementsString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
 {
-                    requirementsString = encodedRequirementsString
-                }
-            }
-            if !urlAppend.isEmpty {
-                urlAppend += UsergridQuery.AMPERSAND
-            }
-            urlAppend += "\(UsergridQuery.QL)=\(requirementsString)"
-        }
-        
-        if !urlAppend.isEmpty {
-            urlAppend = "\(UsergridQuery.QUESTION_MARK)\(urlAppend)"
-        }
-        return urlAppend
-    }
-    
-    private(set) var collectionName: String? = nil
-    private(set) var cursor: String? = nil
-    private(set) var limit: Int = UsergridQuery.LIMIT_DEFAULT
-    
-    private(set) var requirementStrings: [String] = 
[UsergridQuery.EMPTY_STRING]
-    private(set) var orderClauses: [String:UsergridQuerySortOrder] = [:]
-    private(set) var urlTerms: [String] = []
-    
-    private static let LIMIT_DEFAULT = 10
-    private static let AMPERSAND = "&"
-    private static let AND = "and"
-    private static let APOSTROPHE = "'"
-    private static let COMMA = ","
-    private static let CONTAINS = "contains"
-    private static let CURSOR = "cursor"
-    private static let EMPTY_STRING = ""
-    private static let IN = "in"
-    private static let LIMIT = "limit"
-    private static let LOCATION = "location";
-    private static let NOT = "not"
-    private static let OF = "of"
-    private static let OR = "or"
-    private static let ORDER_BY = "order by"
-    private static let QL = "ql"
-    private static let QUESTION_MARK = "?"
-    private static let SPACE = " "
-    private static let WITHIN = "within"
-    
-    internal static let ASC = "asc"
-    internal static let DESC = "desc"
-    internal static let EQUAL = "="
-    internal static let GREATER_THAN = ">"
-    internal static let GREATER_THAN_EQUAL_TO = ">="
-    internal static let LESS_THAN = "<"
-    internal static let LESS_THAN_EQUAL_TO = "<="
-}

http://git-wip-us.apache.org/repos/asf/usergrid/blob/c638c774/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridRequest.swift
----------------------------------------------------------------------
diff --git 
a/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridRequest.swift
 
b/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridRequest.swift
deleted file mode 100644
index dd1f561..0000000
--- 
a/sdks/swift/Samples/Push/Pods/UsergridSDK/sdks/swift/Source/UsergridRequest.swift
+++ /dev/null
@@ -1,245 +0,0 @@
-//
-//  UsergridRequest.swift
-//  UsergridSDK
-//
-//  Created by Robert Walsh on 1/12/16.
-//
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  The ASF licenses this file to You
- * under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.  For additional information regarding
- * copyright in this work, please see the NOTICE file in the top level
- * directory of this distribution.
- *
- */
-
-import Foundation
-
-/** 
- The UsergridRequest class incapsulates the properties that all requests made 
by the SDK have in common.  
-
- This class is also functions to create `NSURLRequest` objects based on the 
properties of the class.
-*/
-public class UsergridRequest : NSObject {
-
-    // MARK: - Instance Properties -
-
-    /// The HTTP method.
-    public let method: UsergridHttpMethod
-
-    /// The base URL.
-    public let baseUrl: String
-
-    /// The paths to append to the base URL.
-    public let paths: [String]?
-
-    /// The query to append to the URL.
-    public let query: UsergridQuery?
-
-    /// The auth that will be used.
-    public let auth: UsergridAuth?
-
-    /// The headers to add to the request.
-    public let headers: [String:String]?
-
-    /// The JSON body that will be set on the request.  Can be either a valid 
JSON object or NSData.
-    public let jsonBody: AnyObject?
-    
-    /// The query params that will be set on the request.
-    public let queryParams: [String:String]?
-
-    // MARK: - Initialization -
-
-    /**
-    The designated initializer for `UsergridRequest` objects.
-    
-    - parameter method:      The HTTP method.
-    - parameter baseUrl:     The base URL.
-    - parameter paths:       The optional paths to append to the base URL.
-    - parameter query:       The optional query to append to the URL.
-    - parameter auth:        The optional `UsergridAuth` that will be used in 
the Authorization header.
-    - parameter headers:     The optional headers.
-    - parameter jsonBody:    The optional JSON body. Can be either a valid 
JSON object or NSData.
-    - parameter queryParams: The optional query params to be appended to the 
request url.
-    
-    - returns: A new instance of `UsergridRequest`.
-    */
-    public init(method:UsergridHttpMethod,
-        baseUrl:String,
-        paths:[String]? = nil,
-        query:UsergridQuery? = nil,
-        auth:UsergridAuth? = nil,
-        headers:[String:String]? = nil,
-        jsonBody:AnyObject? = nil,
-        queryParams:[String:String]? = nil) {
-            self.method = method
-            self.baseUrl = baseUrl
-            self.paths = paths
-            self.auth = auth
-            self.headers = headers
-            self.query = query
-            self.queryParams = queryParams
-            if let body = jsonBody where (body is NSData || 
NSJSONSerialization.isValidJSONObject(body)) {
-                self.jsonBody = body
-            } else {
-                self.jsonBody = nil
-            }
-    }
-
-    // MARK: - Instance Methods -
-
-    /**
-    Constructs a `NSURLRequest` object with this objects instance properties.
-
-    - returns: An initialized and configured `NSURLRequest` object.
-    */
-    public func buildNSURLRequest() -> NSURLRequest {
-        let request = NSMutableURLRequest(URL: self.buildURL())
-        request.HTTPMethod = self.method.stringValue
-        self.applyHeaders(request)
-        self.applyBody(request)
-        self.applyAuth(request)
-        return request
-    }
-
-    private func buildURL() -> NSURL {
-        var constructedURLString = self.baseUrl
-        if let appendingPaths = self.paths {
-            for pathToAppend in appendingPaths {
-                if let encodedPath = 
pathToAppend.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLPathAllowedCharacterSet())
 {
-                    constructedURLString = 
"\(constructedURLString)\(UsergridRequest.FORWARD_SLASH)\(encodedPath)"
-                }
-            }
-        }
-        if let queryToAppend = self.query {
-            let appendFromQuery = queryToAppend.build()
-            if !appendFromQuery.isEmpty {
-                constructedURLString = 
"\(constructedURLString)\(UsergridRequest.FORWARD_SLASH)\(appendFromQuery)"
-            }
-        }
-        if let queryParams = self.queryParams {
-            if let components = NSURLComponents(string: constructedURLString) {
-                components.queryItems = components.queryItems ?? []
-                for (key, value) in queryParams {
-                    let q: NSURLQueryItem = NSURLQueryItem(name: key, value: 
value)
-                    components.queryItems!.append(q)
-                }
-                constructedURLString = components.string!
-            }
-        }
-        return NSURL(string:constructedURLString)!
-    }
-
-    private func applyHeaders(request:NSMutableURLRequest) {
-        if let httpHeaders = self.headers {
-            for (key,value) in httpHeaders {
-                request.setValue(value, forHTTPHeaderField: key)
-            }
-        }
-    }
-
-    private func applyBody(request:NSMutableURLRequest) {
-        if let jsonBody = self.jsonBody, httpBody = 
UsergridRequest.jsonBodyToData(jsonBody) {
-            request.HTTPBody = httpBody
-            request.setValue(String(format: "%lu", httpBody.length), 
forHTTPHeaderField: UsergridRequest.CONTENT_LENGTH)
-        }
-    }
-
-    private func applyAuth(request:NSMutableURLRequest) {
-        if let usergridAuth = self.auth {
-            if usergridAuth.isValid, let accessToken = 
usergridAuth.accessToken {
-                request.setValue("\(UsergridRequest.BEARER) \(accessToken)", 
forHTTPHeaderField: UsergridRequest.AUTHORIZATION)
-            }
-        }
-    }
-
-    private static func jsonBodyToData(jsonBody:AnyObject) -> NSData? {
-        if let jsonBodyAsNSData = jsonBody as? NSData {
-            return jsonBodyAsNSData
-        } else {
-            var jsonBodyAsNSData: NSData? = nil
-            do { jsonBodyAsNSData = try 
NSJSONSerialization.dataWithJSONObject(jsonBody, options: 
NSJSONWritingOptions(rawValue: 0)) }
-            catch { print(error) }
-            return jsonBodyAsNSData
-        }
-    }
-
-    private static let AUTHORIZATION = "Authorization"
-    private static let ACCESS_TOKEN = "access_token"
-    private static let APPLICATION_JSON = "application/json"
-    private static let BEARER = "Bearer"
-    private static let CONTENT_LENGTH = "Content-Length"
-    private static let CONTENT_TYPE = "Content-Type"
-    private static let FORWARD_SLASH = "/"
-
-    static let JSON_CONTENT_TYPE_HEADER = 
[UsergridRequest.CONTENT_TYPE:UsergridRequest.APPLICATION_JSON]
-}
-
-/**
- The `UsergridRequest` sub class which is used for uploading assets.
- */
-public class UsergridAssetUploadRequest: UsergridRequest {
-
-    // MARK: - Instance Properties -
-
-    /// The asset to use for uploading.
-    public let asset: UsergridAsset
-
-    /// A constructed multipart http body for requests to upload.
-    public var multiPartHTTPBody: NSData {
-        let httpBodyString = UsergridAssetUploadRequest.MULTIPART_START +
-            
"\(UsergridAssetUploadRequest.CONTENT_DISPOSITION):\(UsergridAssetUploadRequest.FORM_DATA);
 name=file; filename=\(self.asset.filename)\r\n" +
-            "\(UsergridRequest.CONTENT_TYPE): 
\(self.asset.contentType)\r\n\r\n" as NSString
-
-        let httpBody = NSMutableData()
-        
httpBody.appendData(httpBodyString.dataUsingEncoding(NSUTF8StringEncoding)!)
-        httpBody.appendData(self.asset.data)
-        
httpBody.appendData(UsergridAssetUploadRequest.MULTIPART_END.dataUsingEncoding(NSUTF8StringEncoding)!)
-
-        return httpBody
-    }
-
-    // MARK: - Initialization -
-
-    /**
-     The designated initializer for `UsergridAssetUploadRequest` objects.
-
-     - parameter baseUrl: The base URL.
-     - parameter paths:   The optional paths to append to the base URL.
-     - parameter auth:    The optional `UsergridAuth` that will be used in the 
Authorization header.
-     - parameter asset:   The asset to upload.
-
-    - returns: A new instance of `UsergridRequest`.
-     */
-    public init(baseUrl:String,
-                paths:[String]? = nil,
-                auth:UsergridAuth? = nil,
-                asset:UsergridAsset) {
-                    self.asset = asset
-                    super.init(method: .Put, baseUrl: baseUrl, paths: paths, 
auth: auth)
-    }
-
-    private override func applyHeaders(request: NSMutableURLRequest) {
-        super.applyHeaders(request)
-        
request.setValue(UsergridAssetUploadRequest.ASSET_UPLOAD_CONTENT_HEADER, 
forHTTPHeaderField: UsergridRequest.CONTENT_TYPE)
-        request.setValue(String(format: "%lu", self.multiPartHTTPBody.length), 
forHTTPHeaderField: UsergridRequest.CONTENT_LENGTH)
-    }
-
-    private static let ASSET_UPLOAD_BOUNDARY = "usergrid-asset-upload-boundary"
-    private static let ASSET_UPLOAD_CONTENT_HEADER = "multipart/form-data; 
boundary=\(UsergridAssetUploadRequest.ASSET_UPLOAD_BOUNDARY)"
-    private static let CONTENT_DISPOSITION = "Content-Disposition"
-    private static let MULTIPART_START = 
"--\(UsergridAssetUploadRequest.ASSET_UPLOAD_BOUNDARY)\r\n"
-    private static let MULTIPART_END = 
"\r\n--\(UsergridAssetUploadRequest.ASSET_UPLOAD_BOUNDARY)--\r\n" as NSString
-    private static let FORM_DATA = "form-data"
-}

Reply via email to