Commits

Alfonso Alba García committed 5a6a896

Adding Parse SDK

Comments (0)

Files changed (89)

Parse.framework/Headers

+Versions/Current/Headers

Parse.framework/Parse

+Versions/Current/Parse

Parse.framework/Resources

+Versions/Current/Resources

Parse.framework/Versions/1.1.19/Headers/PFACL.h

+//  PFACL.h
+//  Copyright 2011 Parse, Inc. All rights reserved.
+
+#import <Foundation/Foundation.h>
+
+@class PFUser;
+@class PFRole;
+
+/*!
+ A PFACL is used to control which users can access or modify a particular
+ object. Each PFObject can have its own PFACL. You can grant
+ read and write permissions separately to specific users, to groups of users
+ that belong to roles, or you can grant permissions to "the public" so that,
+ for example, any user could read a particular object but only a particular
+ set of users could write to that object.
+ */
+@interface PFACL : NSObject <NSCopying> {
+@private
+    NSMutableDictionary *permissionsById;
+    BOOL shared;
+    PFUser *unresolvedUser;
+    void (^userResolutionListener)(id result, NSError *error);
+}
+
+/** @name Creating an ACL */
+
+/*!
+ Creates an ACL with no permissions granted.
+ */
++ (PFACL *)ACL;
+
+/*!
+ Creates an ACL where only the provided user has access.
+ */
++ (PFACL *)ACLWithUser:(PFUser *)user;
+
+/** @name Controlling Public Access */
+
+/*!
+ Set whether the public is allowed to read this object.
+ */
+- (void)setPublicReadAccess:(BOOL)allowed;
+
+/*!
+ Gets whether the public is allowed to read this object.
+ */
+- (BOOL)getPublicReadAccess;
+
+/*!
+ Set whether the public is allowed to write this object.
+ */
+- (void)setPublicWriteAccess:(BOOL)allowed;
+
+/*!
+ Gets whether the public is allowed to write this object.
+ */
+- (BOOL)getPublicWriteAccess;
+
+/** @name Controlling Access Per-User */
+
+/*!
+ Set whether the given user id is allowed to read this object.
+ */
+- (void)setReadAccess:(BOOL)allowed forUserId:(NSString *)userId;
+
+/*!
+ Gets whether the given user id is *explicitly* allowed to read this object.
+ Even if this returns NO, the user may still be able to access it if getPublicReadAccess returns YES
+ or if the user belongs to a role that has access.
+ */
+- (BOOL)getReadAccessForUserId:(NSString *)userId;
+
+/*!
+ Set whether the given user id is allowed to write this object.
+ */
+- (void)setWriteAccess:(BOOL)allowed forUserId:(NSString *)userId;
+
+/*!
+ Gets whether the given user id is *explicitly* allowed to write this object.
+ Even if this returns NO, the user may still be able to write it if getPublicWriteAccess returns YES
+ or if the user belongs to a role that has access.
+ */
+- (BOOL)getWriteAccessForUserId:(NSString *)userId;
+
+/*!
+ Set whether the given user is allowed to read this object.
+ */
+- (void)setReadAccess:(BOOL)allowed forUser:(PFUser *)user;
+
+/*!
+ Gets whether the given user is *explicitly* allowed to read this object.
+ Even if this returns NO, the user may still be able to access it if getPublicReadAccess returns YES
+ or if the user belongs to a role that has access.
+ */
+- (BOOL)getReadAccessForUser:(PFUser *)user;
+
+/*!
+ Set whether the given user is allowed to write this object.
+ */
+- (void)setWriteAccess:(BOOL)allowed forUser:(PFUser *)user;
+
+/*!
+ Gets whether the given user is *explicitly* allowed to write this object.
+ Even if this returns NO, the user may still be able to write it if getPublicWriteAccess returns YES
+ or if the user belongs to a role that has access.
+ */
+- (BOOL)getWriteAccessForUser:(PFUser *)user;
+
+/** @name Controlling Access Per-Role */
+
+/*!
+ Get whether users belonging to the role with the given name are allowed
+ to read this object. Even if this returns false, the role may still
+ be able to read it if a parent role has read access.
+ 
+ @param name The name of the role.
+ @return YES if the role has read access. NO otherwise.
+ */
+- (BOOL)getReadAccessForRoleWithName:(NSString *)name;
+
+/*!
+ Set whether users belonging to the role with the given name are allowed
+ to read this object.
+ 
+ @param name The name of the role.
+ @param allowed Whether the given role can read this object.
+ */
+- (void)setReadAccess:(BOOL)allowed forRoleWithName:(NSString *)name;
+
+/*!
+ Get whether users belonging to the role with the given name are allowed
+ to write this object. Even if this returns false, the role may still
+ be able to write it if a parent role has write access.
+ 
+ @param name The name of the role.
+ @return YES if the role has read access. NO otherwise.
+ */
+- (BOOL)getWriteAccessForRoleWithName:(NSString *)name;
+
+/*!
+ Set whether users belonging to the role with the given name are allowed
+ to write this object.
+ 
+ @param name The name of the role.
+ @param allowed Whether the given role can write this object.
+ */
+- (void)setWriteAccess:(BOOL)allowed forRoleWithName:(NSString *)name;
+
+/*!
+ Get whether users belonging to the given role are allowed to read this
+ object. Even if this returns NO, the role may still be able to
+ read it if a parent role has read access. The role must already be saved on
+ the server and its data must have been fetched in order to use this method.
+ 
+ @param roleName    The name of the role.
+ @return YES if the role has read access. NO otherwise.
+ */
+- (BOOL)getReadAccessForRole:(PFRole *)role;
+
+/*!
+ Set whether users belonging to the given role are allowed to read this
+ object. The role must already be saved on the server and its data must have
+ been fetched in order to use this method.
+ 
+ @param role The role to assign access.
+ @param allowed Whether the given role can read this object.
+ */
+- (void)setReadAccess:(BOOL)allowed forRole:(PFRole *)role;
+
+/*!
+ Get whether users belonging to the given role are allowed to write this
+ object. Even if this returns NO, the role may still be able to
+ write it if a parent role has write access. The role must already be saved on
+ the server and its data must have been fetched in order to use this method.
+ 
+ @param roleName The name of the role.
+ @return YES if the role has write access. NO otherwise.
+ */
+- (BOOL)getWriteAccessForRole:(PFRole *)role;
+
+/*!
+ Set whether users belonging to the given role are allowed to write this
+ object. The role must already be saved on the server and its data must have
+ been fetched in order to use this method.
+ 
+ @param role The role to assign access.
+ @param allowed Whether the given role can write this object.
+ */
+- (void)setWriteAccess:(BOOL)allowed forRole:(PFRole *)role;
+
+/** @name Setting Access Defaults */
+
+/*!
+ Sets a default ACL that will be applied to all PFObjects when they are created.
+ @param acl The ACL to use as a template for all PFObjects created after setDefaultACL has been called.
+ This value will be copied and used as a template for the creation of new ACLs, so changes to the
+ instance after setDefaultACL has been called will not be reflected in new PFObjects.
+ @param currentUserAccess If true, the PFACL that is applied to newly-created PFObjects will
+ provide read and write access to the currentUser at the time of creation. If false,
+ the provided ACL will be used without modification. If acl is nil, this value is ignored.
+ */
++ (void)setDefaultACL:(PFACL *)acl withAccessForCurrentUser:(BOOL)currentUserAccess;
+
+@end

Parse.framework/Versions/1.1.19/Headers/PFAnonymousUtils.h

+//
+//  PFAnonymousUtils.h
+//  Parse
+//
+//  Created by David Poll on 3/20/12.
+//  Copyright (c) 2012 Parse, Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "PFUser.h"
+#import "PFConstants.h"
+
+/*!
+ Provides utility functions for working with Anonymously logged-in users.  Anonymous users have some unique characteristics:
+ <ul>
+   <li>Anonymous users don't need a user name or password.</li>
+   <li>Once logged out, an anonymous user cannot be recovered.</li>
+   <li>When the current user is anonymous, the following methods can be used to switch to a different user or convert the
+     anonymous user into a regular one:
+     <ul>
+       <li>signUp converts an anonymous user to a standard user with the given username and password.
+           Data associated with the anonymous user is retained.</li>
+       <li>logIn switches users without converting the anonymous user.  Data associated with the anonymous user will be lost.</li>
+       <li>Service logIn (e.g. Facebook, Twitter) will attempt to convert the anonymous user into a standard user by linking it to the service.
+           If a user already exists that is linked to the service, it will instead switch to the existing user.</li>
+       <li>Service linking (e.g. Facebook, Twitter) will convert the anonymous user into a standard user by linking it to the service.</li>
+     </ul>
+ </ul>
+ */
+@interface PFAnonymousUtils : NSObject
+
+/*! @name Creating an Anonymous User */
+
+/*!
+ Creates an anonymous user.
+ @param block The block to execute when anonymous user creation is complete. The block should have the following argument signature:
+ (PFUser *user, NSError *error) 
+ */
++ (void)logInWithBlock:(PFUserResultBlock)block;
+
+/*!
+ Creates an anonymous user.  The selector for the callback should look like: (PFUser *)user error:(NSError *)error
+ @param target Target object for the selector.
+ @param selector The selector that will be called when the asynchronous request is complete.
+ */
++ (void)logInWithTarget:(id)target selector:(SEL)selector;
+
+/*! @name Determining Whether a PFUser is Anonymous */
+
+/*!
+ Whether the user is logged in anonymously.
+ @param user User to check for anonymity. The user must be logged in on this device.
+ @result True if the user is anonymous.  False if the user is not the current user or is not anonymous.
+ */
++ (BOOL)isLinkedWithUser:(PFUser *)user;
+
+@end

Parse.framework/Versions/1.1.19/Headers/PFCloud.h

+//
+//  PFCloud.h
+//  Parse
+//
+//  Created by Shyam Jayaraman on 8/20/12.
+//  Copyright (c) 2012 Parse Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "PFConstants.h"
+
+@interface PFCloud : NSObject
+
+/*!
+ Calls the given cloud function with the parameters passed in.
+ @param function The function name to call.
+ @param parameters The parameters to send to the function.
+ @result The response from the cloud function.
+ */
++ (id)callFunction:(NSString *)function withParameters:(NSDictionary *)parameters;
+
+/*!
+ Calls the given cloud function with the parameters passed in and sets the error if there is one.
+ @param function The function name to call.
+ @param parameters The parameters to send to the function.
+ @param error Pointer to an NSError that will be set if necessary.
+ @result The response from the cloud function.  This result could be a NSDictionary, an NSArray, NSInteger or NSString.
+ */
++ (id)callFunction:(NSString *)function withParameters:(NSDictionary *)parameters error:(NSError **)error;
+
+/*!
+ Calls the given cloud function with the parameters provided asynchronously and calls the given block when it is done.
+ @param function The function name to call.
+ @param parameters The parameters to send to the function.
+ @param block The block to execute. The block should have the following argument signature:(id result, NSError *error).
+ */
++ (void)callFunctionInBackground:(NSString *)function withParameters:(NSDictionary *)parameters block:(PFIdResultBlock)block;
+
+/*!
+ Calls the given cloud function with the parameters provided asynchronously and runs the callback when it is done.
+ @param function The function name to call.
+ @param parameters The parameters to send to the function.
+ @param target The object to call the selector on.
+ @param selector The selector to call. It should have the following signature: (void)callbackWithResult:(id) result error:(NSError *)error. result will be nil if error is set and vice versa.
+ */
++ (void)callFunctionInBackground:(NSString *)function withParameters:(NSDictionary *)parameters target:(id)target selector:(SEL)selector;
+@end

Parse.framework/Versions/1.1.19/Headers/PFConstants.h

+// PFConstants.h
+// Copyright 2011 Parse, Inc. All rights reserved.
+
+#import <Foundation/Foundation.h>
+@class PFObject;
+@class PFUser;
+
+// Version
+#define PARSE_VERSION @"1.1.19"
+
+extern NSInteger const PARSE_API_VERSION;
+
+// Platform
+#define PARSE_IOS_ONLY (TARGET_OS_IPHONE)
+#define PARSE_OSX_ONLY (TARGET_OS_MAC && !(TARGET_OS_IPHONE))
+
+#if PARSE_IOS_ONLY
+#import <UIKit/UIKit.h>
+#else
+#import <Cocoa/Cocoa.h>
+@compatibility_alias UIImage NSImage;
+@compatibility_alias UIColor NSColor;
+@compatibility_alias UIView NSView;
+#endif
+
+// Server
+extern NSString *const kPFParseServer;
+
+// Cache policies
+typedef enum {
+    kPFCachePolicyIgnoreCache = 0,
+    kPFCachePolicyCacheOnly,
+    kPFCachePolicyNetworkOnly,
+    kPFCachePolicyCacheElseNetwork,
+    kPFCachePolicyNetworkElseCache,
+    kPFCachePolicyCacheThenNetwork
+} PFCachePolicy;
+
+// Errors
+
+/*! @abstract 1: Internal server error. No information available. */
+extern NSInteger const kPFErrorInternalServer;
+
+/*! @abstract 100: The connection to the Parse servers failed. */
+extern NSInteger const kPFErrorConnectionFailed;
+/*! @abstract 101: Object doesn't exist, or has an incorrect password. */
+extern NSInteger const kPFErrorObjectNotFound;
+/*! @abstract 102: You tried to find values matching a datatype that doesn't support exact database matching, like an array or a dictionary. */
+extern NSInteger const kPFErrorInvalidQuery;
+/*! @abstract 103: Missing or invalid classname. Classnames are case-sensitive. They must start with a letter, and a-zA-Z0-9_ are the only valid characters. */
+extern NSInteger const kPFErrorInvalidClassName;
+/*! @abstract 104: Missing object id. */
+extern NSInteger const kPFErrorMissingObjectId;
+/*! @abstract 105: Invalid key name. Keys are case-sensitive. They must start with a letter, and a-zA-Z0-9_ are the only valid characters. */
+extern NSInteger const kPFErrorInvalidKeyName;
+/*! @abstract 106: Malformed pointer. Pointers must be arrays of a classname and an object id. */
+extern NSInteger const kPFErrorInvalidPointer;
+/*! @abstract 107: Malformed json object. A json dictionary is expected. */
+extern NSInteger const kPFErrorInvalidJSON;
+/*! @abstract 108: Tried to access a feature only available internally. */
+extern NSInteger const kPFErrorCommandUnavailable;
+/*! @abstract 111: Field set to incorrect type. */
+extern NSInteger const kPFErrorIncorrectType;
+/*! @abstract 112: Invalid channel name. A channel name is either an empty string (the broadcast channel) or contains only a-zA-Z0-9_ characters and starts with a letter. */
+extern NSInteger const kPFErrorInvalidChannelName;
+/*! @abstract 114: Invalid device token. */
+extern NSInteger const kPFErrorInvalidDeviceToken;
+/*! @abstract 115: Push is misconfigured. See details to find out how. */
+extern NSInteger const kPFErrorPushMisconfigured;
+/*! @abstract 116: The object is too large. */
+extern NSInteger const kPFErrorObjectTooLarge;
+/*! @abstract 119: That operation isn't allowed for clients. */
+extern NSInteger const kPFErrorOperationForbidden;
+/*! @abstract 120: The results were not found in the cache. */
+extern NSInteger const kPFErrorCacheMiss;
+/*! @abstract 121: Keys in NSDictionary values may not include '$' or '.'. */
+extern NSInteger const kPFErrorInvalidNestedKey;
+/*! @abstract 122: Invalid file name. A file name contains only a-zA-Z0-9_. characters and is between 1 and 36 characters. */
+extern NSInteger const kPFErrorInvalidFileName;
+/*! @abstract 123: Invalid ACL. An ACL with an invalid format was saved. This should not happen if you use PFACL. */
+extern NSInteger const kPFErrorInvalidACL;
+/*! @abstract 124: The request timed out on the server. Typically this indicates the request is too expensive. */
+extern NSInteger const kPFErrorTimeout;
+/*! @abstract 125: The email address was invalid. */
+extern NSInteger const kPFErrorInvalidEmailAddress;
+/*! @abstract 137: A unique field was given a value that is already taken. */
+extern NSInteger const kPFErrorDuplicateValue;
+/*! @abstract 139: Role's name is invalid. */
+extern NSInteger const kPFErrorInvalidRoleName;
+/*! @abstract 140: Exceeded an application quota.  Upgrade to resolve. */
+extern NSInteger const kPFErrorExceededQuota;
+/*! @abstract 141: Cloud Code script had an error. */
+extern NSInteger const kPFScriptError;
+/*! @abstract 142: Cloud Code validation failed. */
+extern NSInteger const kPFValidationError;
+/*! @abstract 143: Product purchase receipt is missing */
+extern NSInteger const kPFErrorReceiptMissing;
+/*! @abstract 144: Product purchase receipt is invalid */
+extern NSInteger const kPFErrorInvalidPurchaseReceipt;
+/*! @abstract 145: Payment is disabled on this device */
+extern NSInteger const kPFErrorPaymentDisabled;
+/*! @abstract 146: The product identifier is invalid */
+extern NSInteger const kPFErrorInvalidProductIdentifier;
+/*! @abstract 147: The product is not found in the App Store */
+extern NSInteger const kPFErrorProductNotFoundInAppStore;
+/*! @abstract 148: The Apple server response is not valid */
+extern NSInteger const kPFErrorInvalidServerResponse;
+/*! @abstract 149: Product fails to download due to file system error */
+extern NSInteger const kPFErrorProductDownloadFileSystemFailure;
+/*! @abstract 150: Fail to convert data to image. */
+extern NSInteger const kPFErrorInvalidImageData;
+/*! @abstract 151: Unsaved file. */
+extern NSInteger const kPFErrorUnsavedFile;
+/*! @abstract 153: Fail to delete file. */
+extern NSInteger const kPFErrorFileDeleteFailure;
+
+/*! @abstract 200: Username is missing or empty */
+extern NSInteger const kPFErrorUsernameMissing;
+/*! @abstract 201: Password is missing or empty */
+extern NSInteger const kPFErrorUserPasswordMissing;
+/*! @abstract 202: Username has already been taken */
+extern NSInteger const kPFErrorUsernameTaken;
+/*! @abstract 203: Email has already been taken */
+extern NSInteger const kPFErrorUserEmailTaken;
+/*! @abstract 204: The email is missing, and must be specified */
+extern NSInteger const kPFErrorUserEmailMissing;
+/*! @abstract 205: A user with the specified email was not found */
+extern NSInteger const kPFErrorUserWithEmailNotFound;
+/*! @abstract 206: The user cannot be altered by a client without the session. */
+extern NSInteger const kPFErrorUserCannotBeAlteredWithoutSession;
+/*! @abstract 207: Users can only be created through sign up */
+extern NSInteger const kPFErrorUserCanOnlyBeCreatedThroughSignUp;
+/*! @abstract 208: An existing Facebook account already linked to another user. */
+extern NSInteger const kPFErrorFacebookAccountAlreadyLinked;
+/*! @abstract 208: An existing account already linked to another user. */
+extern NSInteger const kPFErrorAccountAlreadyLinked;
+/*! @abstract 209: User ID mismatch */
+extern NSInteger const kPFErrorUserIdMismatch;
+/*! @abstract 250: Facebook id missing from request */
+extern NSInteger const kPFErrorFacebookIdMissing;
+/*! @abstract 250: Linked id missing from request */
+extern NSInteger const kPFErrorLinkedIdMissing;
+/*! @abstract 251: Invalid Facebook session */
+extern NSInteger const kPFErrorFacebookInvalidSession;
+/*! @abstract 251: Invalid linked session */
+extern NSInteger const kPFErrorInvalidLinkedSession;
+
+typedef void (^PFBooleanResultBlock)(BOOL succeeded, NSError *error);
+typedef void (^PFIntegerResultBlock)(int number, NSError *error);
+typedef void (^PFArrayResultBlock)(NSArray *objects, NSError *error);
+typedef void (^PFObjectResultBlock)(PFObject *object, NSError *error);
+typedef void (^PFSetResultBlock)(NSSet *channels, NSError *error);
+typedef void (^PFUserResultBlock)(PFUser *user, NSError *error);
+typedef void (^PFDataResultBlock)(NSData *data, NSError *error);
+typedef void (^PFDataStreamResultBlock)(NSInputStream *stream, NSError *error);
+typedef void (^PFStringResultBlock)(NSString *string, NSError *error);
+typedef void (^PFIdResultBlock)(id object, NSError *error);
+typedef void (^PFProgressBlock)(int percentDone);

Parse.framework/Versions/1.1.19/Headers/PFFacebookUtils.h

+//
+// PFFacebookUtils.h
+// Copyright (c) 2012 Parse, Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "PF_Facebook.h"
+#import "PFUser.h"
+#import "PFConstants.h"
+
+/*!
+ Provides utility functions for working with Facebook in a Parse application.
+
+ This class is currently for iOS only.
+ */
+@interface PFFacebookUtils : NSObject
+
+/** @name Interacting With Facebook */
+
+/*!
+ Gets the Facebook session for the current user.
+ */
++ (PF_FBSession *)session;
+
+/*!
+ Initializes the Facebook singleton. You must invoke this in order to use the Facebook functionality in Parse.
+ @param appId The Facebook application id that you are using with your Parse application.
+ */
++ (void)initializeWithApplicationId:(NSString *)appId;
+
+/*!
+ Initializes the Facebook singleton. You must invoke this in order to use the Facebook functionality in Parse.
+ @param appId The Facebook application id that you are using with your Parse application.
+ @param urlSchemeSuffix The URL suffix for this application - used when multiple applications with the same
+                        Facebook application ID may be on the same device.
+ */
++ (void)initializeWithApplicationId:(NSString *)appId urlSchemeSuffix:(NSString *)urlSchemeSuffix;
+
+/*!
+ Whether the user has their account linked to Facebook.
+ @param user User to check for a facebook link. The user must be logged in on this device.
+ @result True if the user has their account linked to Facebook.
+ */
++ (BOOL)isLinkedWithUser:(PFUser *)user;
+
+/** @name Logging In & Creating Facebook-Linked Users */
+
+/*!
+ Logs in a user using Facebook. This method delegates to the Facebook SDK to authenticate
+ the user, and then automatically logs in (or creates, in the case where it is a new user)
+ a PFUser.
+ @param permissions The permissions required for Facebook log in. This passed to the authorize method on 
+ the Facebook instance.
+ @param block The block to execute. The block should have the following argument signature:
+ (PFUser *user, NSError *error) 
+ */
++ (void)logInWithPermissions:(NSArray *)permissions block:(PFUserResultBlock)block;
+
+/*!
+ Logs in a user using Facebook. This method delegates to the Facebook SDK to authenticate
+ the user, and then automatically logs in (or creates, in the case where it is a new user)
+ a PFUser. The selector for the callback should look like: (PFUser *)user error:(NSError **)error
+ @param permissions The permissions required for Facebook log in. This passed to the authorize method on 
+ the Facebook instance.
+ @param target Target object for the selector
+ @param selector The selector that will be called when the asynchronous request is complete.
+ */
++ (void)logInWithPermissions:(NSArray *)permissions target:(id)target selector:(SEL)selector;
+
+/*!
+ Logs in a user using Facebook. Allows you to handle user login to Facebook, then provide authentication
+ data to log in (or create, in the case where it is a new user) the PFUser.
+ @param facebookId The id of the Facebook user being linked
+ @param accessToken The access token for the user's session
+ @param expirationDate The expiration date for the access token
+ @param block The block to execute. The block should have the following argument signature:
+ (PFUser *user, NSError *error) 
+ */
++ (void)logInWithFacebookId:(NSString *)facebookId
+                accessToken:(NSString *)accessToken
+             expirationDate:(NSDate *)expirationDate
+                      block:(PFUserResultBlock)block;
+
+/*!
+ Logs in a user using Facebook. Allows you to handle user login to Facebook, then provide authentication
+ data to log in (or create, in the case where it is a new user) the PFUser.
+ The selector for the callback should look like: (PFUser *)user error:(NSError *)error
+ @param facebookId The id of the Facebook user being linked
+ @param accessToken The access token for the user's session
+ @param expirationDate The expiration date for the access token
+ @param target Target object for the selector
+ @param selector The selector that will be called when the asynchronous request is complete
+ */
++ (void)logInWithFacebookId:(NSString *)facebookId
+                accessToken:(NSString *)accessToken
+             expirationDate:(NSDate *)expirationDate
+                     target:(id)target
+                   selector:(SEL)selector;
+
+/** @name Linking Users with Facebook */
+
+/*!
+ Links Facebook to an existing PFUser. This method delegates to the Facebook SDK to authenticate
+ the user, and then automatically links the account to the PFUser.
+ @param user User to link to Facebook.
+ @param permissions The permissions required for Facebook log in. This passed to the authorize method on 
+ the Facebook instance.
+ */
++ (void)linkUser:(PFUser *)user permissions:(NSArray *)permissions;
+
+/*!
+ Links Facebook to an existing PFUser. This method delegates to the Facebook SDK to authenticate
+ the user, and then automatically links the account to the PFUser.
+ @param user User to link to Facebook.
+ @param permissions The permissions required for Facebook log in. This passed to the authorize method on 
+ the Facebook instance.
+ @param block The block to execute. The block should have the following argument signature:
+ (BOOL *success, NSError *error) 
+ */
++ (void)linkUser:(PFUser *)user permissions:(NSArray *)permissions block:(PFBooleanResultBlock)block;
+
+/*!
+ Links Facebook to an existing PFUser. This method delegates to the Facebook SDK to authenticate
+ the user, and then automatically links the account to the PFUser.
+ The selector for the callback should look like: (NSNumber *)result error:(NSError *)error
+ @param user User to link to Facebook.
+ @param permissions The permissions required for Facebook log in. This passed to the authorize method on 
+ the Facebook instance.
+ @param target Target object for the selector
+ @param selector The selector that will be called when the asynchronous request is complete.
+ */
++ (void)linkUser:(PFUser *)user permissions:(NSArray *)permissions target:(id)target selector:(SEL)selector;
+
+/*!
+ Links Facebook to an existing PFUser. Allows you to handle user login to Facebook, then provide authentication
+ data to link the account to the PFUser.
+ @param user User to link to Facebook.
+ @param facebookId The id of the Facebook user being linked
+ @param accessToken The access token for the user's session
+ @param expirationDate The expiration date for the access token
+ @param block The block to execute. The block should have the following argument signature:
+ (BOOL *success, NSError *error) 
+ */
++ (void)linkUser:(PFUser *)user
+      facebookId:(NSString *)facebookId
+     accessToken:(NSString *)accessToken
+  expirationDate:(NSDate *)expirationDate
+           block:(PFBooleanResultBlock)block;
+
+/*!
+ Links Facebook to an existing PFUser. Allows you to handle user login to Facebook, then provide authentication
+ data to link the account to the PFUser.
+ The selector for the callback should look like: (NSNumber *)result error:(NSError *)error
+ @param user User to link to Facebook.
+ @param facebookId The id of the Facebook user being linked
+ @param accessToken The access token for the user's session
+ @param expirationDate The expiration date for the access token
+ @param target Target object for the selector
+ @param selector The selector that will be called when the asynchronous request is complete
+ */
++ (void)linkUser:(PFUser *)user
+      facebookId:(NSString *)facebookId
+     accessToken:(NSString *)accessToken
+  expirationDate:(NSDate *)expirationDate
+          target:(id)target
+        selector:(SEL)selector;
+
+/** @name Unlinking Users from Facebook */
+
+/*!
+ Unlinks the PFUser from a Facebook account. 
+ @param user User to unlink from Facebook.
+ @result Returns true if the unlink was successful.
+ */
++ (BOOL)unlinkUser:(PFUser *)user;
+
+/*!
+ Unlinks the PFUser from a Facebook account. 
+ @param user User to unlink from Facebook.
+ @param error Error object to set on error.
+ @result Returns true if the unlink was successful.
+ */
++ (BOOL)unlinkUser:(PFUser *)user error:(NSError **)error;
+
+/*!
+ Makes an asynchronous request to unlink a user from a Facebook account. 
+ @param user User to unlink from Facebook.
+ */
++ (void)unlinkUserInBackground:(PFUser *)user;
+
+/*!
+ Makes an asynchronous request to unlink a user from a Facebook account. 
+ @param user User to unlink from Facebook.
+ @param block The block to execute. The block should have the following argument signature: (BOOL succeeded, NSError *error) 
+ */
++ (void)unlinkUserInBackground:(PFUser *)user block:(PFBooleanResultBlock)block;
+
+/*!
+ Makes an asynchronous request to unlink a user from a Facebook account. 
+ @param user User to unlink from Facebook
+ @param target Target object for the selector
+ @param selector The selector that will be called when the asynchronous request is complete.
+ */
++ (void)unlinkUserInBackground:(PFUser *)user target:(id)target selector:(SEL)selector;
+
+/** @name Obtaining new permissions */
+
+/*!
+ Requests new Facebook publish permissions for the given user.  This may prompt the user to
+ reauthorize the application. The user will be saved as part of this operation.
+ @param user User to request new permissions for.  The user must be linked to Facebook.
+ @param permissions The new publishing permissions to request.
+ @param audience The default audience for publishing permissions to request.
+ @param block The block to execute. The block should have the following argument signature: (BOOL succeeded, NSError *error)
+ */
++ (void)reauthorizeUser:(PFUser *)user
+ withPublishPermissions:(NSArray *)permissions
+               audience:(PF_FBSessionDefaultAudience)audience
+                  block:(PFBooleanResultBlock)block;
+
+/*!
+ Requests new Facebook publish permissions for the given user.  This may prompt the user to
+ reauthorize the application. The user will be saved as part of this operation.
+ @param user User to request new permissions for.  The user must be linked to Facebook.
+ @param permissions The new publishing permissions to request.
+ @param audience The default audience for publishing permissions to request.
+ @param target Target object for the selector
+ @param selector The selector that will be called when the asynchronous request is complete.
+ */
++ (void)reauthorizeUser:(PFUser *)user
+ withPublishPermissions:(NSArray *)permissions
+               audience:(PF_FBSessionDefaultAudience)audience
+                 target:(id)target
+               selector:(SEL)selector;
+
+/** @name Delegating URL Actions */
+
+/*!
+ Handles URLs being opened by your AppDelegate. Invoke and return this from application:handleOpenURL:
+ or application:openURL:sourceApplication:annotation in your AppDelegate.
+ @param url URL being opened by your application.
+ @result True if Facebook will handle this URL.
+ */
++ (BOOL)handleOpenURL:(NSURL *)url;
+
+/** @name Interacting With Facebook (Deprecated) */
+
+/*!
+ Gets the instance of the Facebook object (from the Facebook SDK) that Parse uses.
+ @result The Facebook instance.
+ */
++ (PF_Facebook *)facebook __attribute__ ((deprecated));
+
+/*!
+ Gets the instance of the Facebook object (from the Facebook SDK) that Parse uses.
+ @param delegate Specify your own delegate for the Facebook object.
+ @result The Facebook instance
+ */
++ (PF_Facebook *)facebookWithDelegate:(NSObject<PF_FBSessionDelegate> *)delegate __attribute__ ((deprecated));
+
+/** @name Extending Facebook Access Tokens (Deprecated) */
+
+/*!
+ Whether the user has a Facebook access token that needs to be extended.
+ @param user User that is linked to Facebook and should be checked for access token extension.
+ @result True if the access token needs to be extended.
+ */
++ (BOOL)shouldExtendAccessTokenForUser:(PFUser *)user __attribute__ ((deprecated));
+
+/*!
+ Extends the access token for a user using Facebook, and saves the refreshed access token back to the PFUser.
+ The selector for the callback should look like: (NSNumber *)result error:(NSError *)error
+ @param user User whose access token should be extended
+ @param target Target object for the selector
+ @param selector The selector that will be called when the asynchronous request is complete.
+ */
++ (void)extendAccessTokenForUser:(PFUser *)user target:(id)target selector:(SEL)selector __attribute__ ((deprecated));
+
+/*!
+ Extends the access token for a user using Facebook, and saves the refreshed access token back to the PFUser.
+ @param user User whose access token should be extended
+ @param block The block to execute. The block should have the following argument signature:
+ (BOOL success, NSError *error) 
+ */
++ (void)extendAccessTokenForUser:(PFUser *)user block:(PFBooleanResultBlock)block __attribute__ ((deprecated));
+
+/*!
+ If necessary, extends the access token for a user using Facebook, and saves the refreshed 
+ access token back to the PFUser.  We recommend invoking this from applicationDidBecomeActive: in your AppDelegate.
+ The selector for the callback should look like: (NSNumber *)result error:(NSError *)error
+ @param user User whose access token should be extended
+ @param target Target object for the selector
+ @param selector The selector that will be called when the asynchronous request is complete.
+ @result True if the access token needed to be extended.
+ */
++ (BOOL)extendAccessTokenIfNeededForUser:(PFUser *)user target:(id)target selector:(SEL)selector __attribute__ ((deprecated));
+
+/*!
+ If necessary, extends the access token for a user using Facebook, and saves the refreshed 
+ access token back to the PFUser.  We recommend invoking this from applicationDidBecomeActive: in your AppDelegate.
+ @param user User whose access token should be extended
+ @param block The block to execute. The block should have the following argument signature:
+ (BOOL success, NSError *error) 
+ @result True if the access token needed to be extended.
+ */
++ (BOOL)extendAccessTokenIfNeededForUser:(PFUser *)user block:(PFBooleanResultBlock)block __attribute__ ((deprecated));
+
+@end

Parse.framework/Versions/1.1.19/Headers/PFFile.h

+//
+//  PFFile.h
+//  Parse
+//
+//  Created by Ilya Sukhar on 10/11/11.
+//  Copyright 2011 Ping Labs, Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "PFConstants.h"
+
+/*!
+ A file of binary data stored on the Parse servers. This can be a image, video, or anything else
+ that an application needs to reference in a non-relational way.
+ */
+@interface PFFile : NSObject {
+    NSString *name;
+    NSString *url;
+}
+
+/** @name Creating a PFFile */
+
+/*!
+ Creates a file with given data. A name will be assigned to it by the server.
+ @param data The contents of the new PFFile.
+ @result A PFFile.
+ */
++ (id)fileWithData:(NSData *)data;
+
+/*!
+ Creates a file with given data and name.
+ @param name The name of the new PFFile.
+ @param data The contents of hte new PFFile.
+ @result A PFFile.
+ */
++ (id)fileWithName:(NSString *)name data:(NSData *)data;
+
+/*!
+ Creates a file with the contents of another file.
+ @param name The name of the new PFFile
+ @param path The path to the file that will be uploaded to Parse
+ */
++ (id)fileWithName:(NSString *)name 
+    contentsAtPath:(NSString *)path;
+
+/*!
+The name of the file.
+ */
+@property (readonly) NSString *name;
+
+/*!
+ The url of the file.
+ */
+@property (readonly) NSString *url;
+
+/** @name Storing Data with Parse */
+
+/*!
+ Whether the file has been uploaded for the first time.
+ */
+@property (readonly) BOOL isDirty;
+
+/*!
+ Saves the file.
+ @result Returns whether the save succeeded.
+ */
+- (BOOL)save;
+
+/*!
+ Saves the file and sets an error if it occurs.
+ @param error Pointer to an NSError that will be set if necessary.
+ @result Returns whether the save succeeded.
+ */
+- (BOOL)save:(NSError **)error;
+
+/*!
+ Saves the file asynchronously.
+ @result Returns whether the save succeeded.
+ */
+- (void)saveInBackground;
+
+/*!
+ Saves the file asynchronously and executes the given block.
+ @param block The block should have the following argument signature: (BOOL succeeded, NSError *error)
+ */
+- (void)saveInBackgroundWithBlock:(PFBooleanResultBlock)block;
+
+/*!
+ Saves the file asynchronously and executes the given resultBlock. Executes the progressBlock periodically with the percent
+ progress. progressBlock will get called with 100 before resultBlock is called.
+ @param block The block should have the following argument signature: (BOOL succeeded, NSError *error)
+ @param progressBlock The block should have the following argument signature: (int percentDone)
+ */
+- (void)saveInBackgroundWithBlock:(PFBooleanResultBlock)block
+                    progressBlock:(PFProgressBlock)progressBlock;
+
+/*!
+ Saves the file asynchronously and calls the given callback.
+ @param target The object to call selector on.
+ @param selector The selector to call. It should have the following signature: (void)callbackWithResult:(NSNumber *)result error:(NSError *)error. error will be nil on success and set if there was an error. [result boolValue] will tell you whether the call succeeded or not.
+ */
+- (void)saveInBackgroundWithTarget:(id)target selector:(SEL)selector;
+
+/** @name Getting Data from Parse */
+
+/*!
+ Whether the data is available in memory or needs to be downloaded.
+ */
+@property (readonly) BOOL isDataAvailable;
+
+/*!
+ Gets the data from cache if available or fetches its contents from the Parse
+ servers.
+ @result The data. Returns nil if there was an error in fetching.
+ */
+- (NSData *)getData;
+
+/*!
+ This method is like getData but avoids ever holding the entire PFFile's
+ contents in memory at once. This can help applications with many large PFFiles
+ avoid memory warnings.
+ @result A stream containing the data. Returns nil if there was an error in 
+ fetching.
+ */
+- (NSInputStream *)getDataStream;
+
+/*!
+ Gets the data from cache if available or fetches its contents from the Parse
+ servers. Sets an error if it occurs.
+ @param error Pointer to an NSError that will be set if necessary.
+ @result The data. Returns nil if there was an error in fetching.
+ */
+- (NSData *)getData:(NSError **)error;
+
+/*!
+ This method is like getData: but avoids ever holding the entire PFFile's
+ contents in memory at once. This can help applications with many large PFFiles
+ avoid memory warnings. Sets an error if it occurs.
+ @param error Pointer to an NSError that will be set if necessary.
+ @result A stream containing the data. Returns nil if there was an error in 
+ fetching.
+ */
+- (NSInputStream *)getDataStream:(NSError **)error;
+
+/*!
+ Asynchronously gets the data from cache if available or fetches its contents 
+ from the Parse servers. Executes the given block.
+ @param block The block should have the following argument signature: (NSData *result, NSError *error)
+ */
+- (void)getDataInBackgroundWithBlock:(PFDataResultBlock)block;
+
+/*!
+ This method is like getDataInBackgroundWithBlock: but avoids ever holding the 
+ entire PFFile's contents in memory at once. This can help applications with
+ many large PFFiles avoid memory warnings.
+ @param block The block should have the following argument signature: (NSInputStream *result, NSError *error)
+ */
+- (void)getDataStreamInBackgroundWithBlock:(PFDataStreamResultBlock)block;
+
+/*!
+ Asynchronously gets the data from cache if available or fetches its contents 
+ from the Parse servers. Executes the resultBlock upon
+ completion or error. Executes the progressBlock periodically with the percent progress. progressBlock will get called with 100 before resultBlock is called.
+ @param block The block should have the following argument signature: (NSData *result, NSError *error)
+ @param progressBlock The block should have the following argument signature: (int percentDone)
+ */
+- (void)getDataInBackgroundWithBlock:(PFDataResultBlock)resultBlock
+                       progressBlock:(PFProgressBlock)progressBlock;
+
+/*!
+ This method is like getDataInBackgroundWithBlock:progressBlock: but avoids ever
+ holding the entire PFFile's contents in memory at once. This can help 
+ applications with many large PFFiles avoid memory warnings.
+ @param resultBlock The block should have the following argument signature: (NSInputStream *result, NSError *error)
+ @param progressBlock The block should have the following argument signature: (int percentDone)
+ */
+- (void)getDataStreamInBackgroundWithBlock:(PFDataStreamResultBlock)resultBlock
+                             progressBlock:(PFProgressBlock)progressBlock;
+
+/*!
+ Asynchronously gets the data from cache if available or fetches its contents 
+ from the Parse servers.
+ @param target The object to call selector on.
+ @param selector The selector to call. It should have the following signature: (void)callbackWithResult:(NSData *)result error:(NSError *)error. error will be nil on success and set if there was an error.
+ */
+- (void)getDataInBackgroundWithTarget:(id)target selector:(SEL)selector;
+
+/** @name Interrupting a Transfer */
+
+/*!
+ Cancels the current request (whether upload or download of file data).
+ */
+- (void)cancel;
+
+@end

Parse.framework/Versions/1.1.19/Headers/PFGeoPoint.h

+//
+//  PFGeoPoint.h
+//  Parse
+//
+//  Created by Henele Adams on 12/1/11.
+//  Copyright (c) 2011 Parse, Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <CoreLocation/CoreLocation.h>
+
+/*!
+ Object which may be used to embed a latitude / longitude point as the value for a key in a PFObject.
+ PFObjects with a PFGeoPoint field may be queried in a geospatial manner using PFQuery's whereKey:nearGeoPoint:.
+ 
+ This is also used as a point specifier for whereKey:nearGeoPoint: queries.
+ 
+ Currently, object classes may only have one key associated with a GeoPoint type.
+ */
+
+@interface PFGeoPoint : NSObject<NSCopying> {
+    double latitude;
+    double longitude;
+}
+
+/** @name Creating a PFGeoPoint */
+/*!
+ Create a PFGeoPoint object.  Latitude and longitude are set to 0.0.
+ @result Returns a new PFGeoPoint.
+ */
++ (PFGeoPoint *)geoPoint;
+
+/*!
+ Creates a new PFGeoPoint object for the given CLLocation, set to the location's
+ coordinates.
+ @param location CLLocation object, with set latitude and longitude.
+ @result Returns a new PFGeoPoint at specified location.
+ */
++ (PFGeoPoint *)geoPointWithLocation:(CLLocation *)location;
+
+/*!
+ Creates a new PFGeoPoint object with the specified latitude and longitude.
+ @param latitude Latitude of point in degrees.
+ @param longitude Longitude of point in degrees.
+ @result New point object with specified latitude and longitude.
+ */
++ (PFGeoPoint *)geoPointWithLatitude:(double)latitude longitude:(double)longitude;
+
+/*!
+ Fetches the user's current location and returns a new PFGeoPoint object via the
+ provided block.
+ @param geoPointHandler A block which takes the newly created PFGeoPoint as an
+ argument.
+ */
++ (void)geoPointForCurrentLocationInBackground:(void(^)(PFGeoPoint *geoPoint, NSError *error))geoPointHandler;
+
+/** @name Controlling Position */
+
+/// Latitude of point in degrees.  Valid range (-90.0, 90.0).
+@property (nonatomic) double latitude;
+/// Longitude of point in degrees.  Valid range (-180.0, 180.0).
+@property (nonatomic) double longitude;
+
+/** @name Calculating Distance */
+
+/*!
+ Get distance in radians from this point to specified point.
+ @param point PFGeoPoint location of other point.
+ @result distance in radians
+ */
+- (double)distanceInRadiansTo:(PFGeoPoint*)point;
+
+/*!
+ Get distance in miles from this point to specified point.
+ @param point PFGeoPoint location of other point.
+ @result distance in miles
+ */
+- (double)distanceInMilesTo:(PFGeoPoint*)point;
+
+/*!
+ Get distance in kilometers from this point to specified point.
+ @param point PFGeoPoint location of other point.
+ @result distance in kilometers
+ */
+- (double)distanceInKilometersTo:(PFGeoPoint*)point;
+
+
+@end

Parse.framework/Versions/1.1.19/Headers/PFImageView.h

+//
+//  PFImageView.h
+//  Parse
+//
+//  Created by Qian Wang on 5/16/12.
+//  Copyright (c) 2012 Parse Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import "PFFile.h"
+
+/*!
+ An image view that downloads and displays remote image stored on Parse's server.
+ */
+@interface PFImageView : UIImageView
+
+/// The remote file on Parse's server that stores the image.
+/// Note that the download does not start until loadInBackground: is called.
+@property (nonatomic, retain) PFFile *file;
+
+/*!
+ Initiate downloading of the remote image. Once the download completes, the remote image will be displayed.
+ */
+- (void)loadInBackground;
+
+/*!
+ Initiate downloading of the remote image. Once the download completes, the remote image will be displayed.
+ @param completion the completion block.
+ */
+- (void)loadInBackground:(void (^)(UIImage *image, NSError *error))completion;
+
+@end

Parse.framework/Versions/1.1.19/Headers/PFInstallation.h

+//
+//  PFInstallation.h
+//  Parse
+//
+//  Created by Brian Jacokes on 6/4/12.
+//  Copyright (c) 2012 Parse, Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "PFObject.h"
+#import "PFQuery.h"
+
+/*!
+ A Parse Framework Installation Object that is a local representation of an
+ installation persisted to the Parse cloud. This class is a subclass of a
+ PFObject, and retains the same functionality of a PFObject, but also extends
+ it with installation-specific fields and related immutability and validity
+ checks.
+ 
+ A valid PFInstallation can only be instantiated via
+ [PFInstallation currentInstallation] because the required identifier fields
+ are readonly. The timeZone and badge fields are also readonly properties which
+ are automatically updated to match the device's time zone and application badge
+ when the PFInstallation is saved, thus these fields might not reflect the
+ latest device state if the installation has not recently been saved.
+
+ PFInstallation objects which have a valid deviceToken and are saved to
+ the Parse cloud can be used to target push notifications.
+
+ This class is currently for iOS only. There is no PFInstallation for Parse
+ applications running on OS X, because they cannot receive push notifications.
+ */
+
+@interface PFInstallation : PFObject {
+}
+
+/** @name Targeting Installations */
+
+/*!
+ Creates a query for PFInstallation objects. The resulting query can only
+ be used for targeting a PFPush. Calling find methods on the resulting query
+ will raise an exception.
+ */
++ (PFQuery *)query;
+
+/** @name Accessing the Current Installation */
+
+/*!
+ Gets the currently-running installation from disk and returns an instance of
+ it. If this installation is not stored on disk, returns a PFInstallation
+ with deviceType and installationId fields set to those of the
+ current installation, and a deviceToken field set to the value stored by
+ [PFPush storeDeviceToken:]. In the latter case, if this installation matches
+ one in the Parse cloud, then calling save will fill in this installation's
+ objectId instead of creating a new installation.
+ @result Returns a PFInstallation that represents the currently-running
+ installation.
+ */
++ (PFInstallation *)currentInstallation;
+
+/** @name Properties */
+
+/// The device type for the PFInstallation.
+@property (nonatomic, readonly, retain) NSString *deviceType;
+
+/// The installationId for the PFInstallation.
+@property (nonatomic, readonly, retain) NSString *installationId;
+
+/// The device token for the PFInstallation.
+@property (nonatomic, readonly, retain) NSString *deviceToken;
+
+/// The badge for the PFInstallation.
+@property (nonatomic, assign) NSInteger badge;
+
+/// The timeZone for the PFInstallation.
+@property (nonatomic, readonly, retain) NSString *timeZone;
+
+/// The channels for the PFInstallation.
+@property (nonatomic, retain) NSArray *channels;
+
+@end

Parse.framework/Versions/1.1.19/Headers/PFLogInView.h

+//
+//  PFLogInView.h
+//  Parse
+//
+//  Created by Qian Wang on 3/9/12.
+//  Copyright (c) 2012. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+typedef enum {
+    PFLogInFieldsNone = 0,
+    PFLogInFieldsUsernameAndPassword = 1 << 0,
+    PFLogInFieldsPasswordForgotten = 1 << 1,
+    PFLogInFieldsLogInButton = 1 << 2,
+    PFLogInFieldsFacebook = 1 << 3,
+    PFLogInFieldsTwitter = 1 << 4,
+    PFLogInFieldsSignUpButton = 1 << 5,
+    PFLogInFieldsDismissButton = 1 << 6,
+    
+    PFLogInFieldsDefault = PFLogInFieldsUsernameAndPassword | PFLogInFieldsLogInButton | PFLogInFieldsSignUpButton | PFLogInFieldsPasswordForgotten | PFLogInFieldsDismissButton
+} PFLogInFields;
+
+/*!
+ The class provides a standard log in interface for authenticating a PFUser.
+ */
+@interface PFLogInView : UIView
+
+/*! @name Creating Log In View */
+/*!
+ Initializes the view with the specified log in elements.
+ @param fields A bitmask specifying the log in elements which are enabled in the view
+ */
+- (id)initWithFields:(PFLogInFields) fields;
+
+/*! @name Customizing the Logo */
+
+/// The logo. By default, it is the Parse logo.
+@property (nonatomic, retain) UIView *logo;
+
+/*! @name Accessing Log In Elements */
+
+/// The bitmask which specifies the enabled log in elements in the view
+@property (nonatomic, readonly, assign) PFLogInFields fields;
+
+/// The username text field. It is nil if the element is not enabled.
+@property (nonatomic, readonly, retain) UITextField *usernameField;
+
+/// The password text field. It is nil if the element is not enabled.
+@property (nonatomic, readonly, retain) UITextField *passwordField;
+
+/// The password forgotten button. It is nil if the element is not enabled.
+@property (nonatomic, readonly, retain) UIButton *passwordForgottenButton;
+
+/// The log in button. It is nil if the element is not enabled.
+@property (nonatomic, readonly, retain) UIButton *logInButton;
+
+/// The Facebook button. It is nil if the element is not enabled.
+@property (nonatomic, readonly, retain) UIButton *facebookButton;
+
+/// The Twitter button. It is nil if the element is not enabled.
+@property (nonatomic, readonly, retain) UIButton *twitterButton;
+
+/// The sign up button. It is nil if the element is not enabled.
+@property (nonatomic, readonly, retain) UIButton *signUpButton;
+
+/// The dismiss button. It is nil if the element is not enabled.
+@property (nonatomic, readonly, retain) UIButton *dismissButton;
+
+/// The facebook/twitter login label. It is only shown if the external login is enabled.
+@property (nonatomic, readonly, retain) UILabel *externalLogInLabel;
+
+/// The sign up label. It is only shown if sign up button is enabled.
+@property (nonatomic, readonly, retain) UILabel *signUpLabel;
+
+@end
+
+

Parse.framework/Versions/1.1.19/Headers/PFLogInViewController.h

+//
+//  PFLogInViewController.h
+//  Parse
+//
+//  Created by Andrew Wang on 3/8/12.
+//  Copyright (c) 2012. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import "PFLogInView.h"
+#import "PFSignUpViewController.h"
+#import "PFUser.h"
+
+@protocol PFLogInViewControllerDelegate;
+
+/*!
+ The class that presents and manages a standard authentication interface for logging in a PFUser.
+ */
+@interface PFLogInViewController : UIViewController <UITextFieldDelegate>
+
+/*! @name Configuring Log In Elements */
+
+/*!
+ A bitmask specifying the log in elements which are enabled in the view.
+    enum {
+        PFLogInFieldsNone = 0,
+        PFLogInFieldsUsernameAndPassword = 1 << 0,
+        PFLogInFieldsPasswordForgotten = 1 << 1,
+        PFLogInFieldsLogInButton = 1 << 2,
+        PFLogInFieldsFacebook = 1 << 3,
+        PFLogInFieldsTwitter = 1 << 4,
+        PFLogInFieldsSignUpButton = 1 << 5,
+        PFLogInFieldsDismissButton = 1 << 6,
+        PFLogInFieldsDefault = PFLogInFieldsUsernameAndPassword | PFLogInFieldsLogInButton | PFLogInFieldsSignUpButton | PFLogInFieldsPasswordForgotten | PFLogInFieldsDismissButton
+    };
+ */
+@property (nonatomic) PFLogInFields fields;
+
+/// The log in view. It contains all the enabled log in elements.
+@property (nonatomic, readonly, retain) PFLogInView *logInView;
+
+/*! @name Configuring Log In Behaviors */
+/// The delegate that responds to the control events of PFLogInViewController.
+@property (nonatomic, assign) id<PFLogInViewControllerDelegate> delegate;
+
+/// The facebook permissions that Facebook log in requests for.
+/// If unspecified, the default is basic facebook permissions.
+@property (nonatomic, retain) NSArray *facebookPermissions;
+
+/// The sign up controller if sign up is enabled.
+/// Use this to configure the sign up view, and the transition animation to the sign up view.
+/// The default is a sign up view with a username, a password, a dismiss button and a sign up button.
+@property (nonatomic, retain) PFSignUpViewController *signUpController; 
+
+@end
+
+/*! @name Notifications */
+/// The notification is posted immediately after the log in succeeds.
+extern NSString *const PFLogInSuccessNotification;
+
+/// The notification is posted immediately after the log in fails.
+/// If the delegate prevents the log in from starting, the notification is not sent.
+extern NSString *const PFLogInFailureNotification;
+
+/// The notification is posted immediately after the log in is cancelled.
+extern NSString *const PFLogInCancelNotification;
+
+/*!
+ The protocol defines methods a delegate of a PFLogInViewController should implement.
+ All methods of the protocol are optional.
+ */
+@protocol PFLogInViewControllerDelegate <NSObject>
+@optional
+
+/*! @name Customizing Behavior */
+
+/*!
+ Sent to the delegate to determine whether the log in request should be submitted to the server.
+ @param username the username the user tries to log in with.
+ @param password the password the user tries to log in with.
+ @result a boolean indicating whether the log in should proceed.
+ */
+- (BOOL)logInViewController:(PFLogInViewController *)logInController shouldBeginLogInWithUsername:(NSString *)username password:(NSString *)password;
+
+/*! @name Responding to Actions */
+/// Sent to the delegate when a PFUser is logged in.
+- (void)logInViewController:(PFLogInViewController *)logInController didLogInUser:(PFUser *)user;
+
+/// Sent to the delegate when the log in attempt fails.
+- (void)logInViewController:(PFLogInViewController *)logInController didFailToLogInWithError:(NSError *)error;
+
+/// Sent to the delegate when the log in screen is dismissed.
+- (void)logInViewControllerDidCancelLogIn:(PFLogInViewController *)logInController;
+@end
+

Parse.framework/Versions/1.1.19/Headers/PFObject.h

+// PFObject.h
+// Copyright 2011 Parse, Inc. All rights reserved.
+
+#import <Foundation/Foundation.h>
+#import "PFACL.h"
+#import "PFConstants.h"
+
+/*!
+ A Parse Framework Object that is a local representation of data persisted to the Parse cloud. This is the
+ main class that is used to interact with objects in your app.
+*/
+@class PFOperation;
+@class PFRelation;
+
+@interface PFObject : NSObject {
+    BOOL dirty;
+    BOOL hasBeenFetched;
+
+    NSOperation *allPreviousOperations;
+
+    NSString *objectId;
+    NSString *className;
+
+    NSMutableDictionary *dataAvailability;
+
+    // The data as it was known the last time it was fetched from the server.
+    // If the object has never been fetched, some keys on the server may not
+    // be present in this dictionary, while others may be known because of the
+    // result of a save.
+    NSMutableDictionary *serverData;
+
+    // An array of NSDictionary of NSString -> PFFieldOperation.
+    // Each dictionary has a subset of the object's keys as keys, and the
+    // changes to the value for that key as its value.
+    // There is always at least one dictionary of pending operations.
+    // Every time a save is started, a new dictionary is added to the end.
+    // Whenever a save completes, the new data is put into fetchedData, and
+    //     a dictionary is removed from the start.
+    NSMutableArray *operationSetQueue;
+
+    // Our best estimate as to what the current data is, based on
+    // the last fetch from the server, and the set of pending operations.
+    NSMutableDictionary *estimatedData;
+
+    // A dictionary that maps id (objects) => PFJSONCache 
+    NSMutableDictionary *hashedObjectsCache;
+
+    NSDate *updatedAt;
+    NSDate *createdAt;
+}
+
+#pragma mark Constructors
+
+/*! @name Creating a PFObject */
+
+/*!
+ Creates a new PFObject with a class name.
+ @param className A class name can be any alphanumeric string that begins with a letter. It represents an object in your app, like a User of a Document.
+ @result Returns the object that is instantiated with the given class name.
+ */
++ (PFObject *)objectWithClassName:(NSString *)className;
+
+/*!
+ Creates a reference to an existing PFObject for use in creating associations between PFObjects.  Calling isDataAvailable on this
+ object will return NO until fetchIfNeeded or refresh has been called.  No network request will be made.
+ 
+ @param className The object's class.
+ @param objectId The object id for the referenced object.
+ @result A PFObject without data.
+ */
++ (PFObject *)objectWithoutDataWithClassName:(NSString *)className
+                                    objectId:(NSString *)objectId;
+
+/*!
+ Creates a new PFObject with a class name, initialized with data constructed from the specified set of objects and keys.
+ @param className The object's class.
+ @param dictionary An NSDictionary of keys and objects to set on the new PFObject.
+ @result A PFObject with the given class name and set with the given data.
+ */
++ (PFObject *)objectWithClassName:(NSString *)className dictionary:(NSDictionary *)dictionary;
+
+/*!
+ Initializes a new PFObject with a class name.
+ @param newClassName A class name can be any alphanumeric string that begins with a letter. It represents an object in your app, like a User or a Document.
+ @result Returns the object that is instantiated with the given class name.
+ */
+- (id)initWithClassName:(NSString *)newClassName;
+
+#pragma mark -
+#pragma mark Properties
+
+/*! @name Managing Object Properties */
+
+/*!
+ The id of the object.
+ */
+@property (nonatomic, retain) NSString *objectId;
+
+/*!
+ When the object was last updated.
+ */
+@property (nonatomic, retain, readonly) NSDate *updatedAt;
+
+/*!
+ When the object was created.
+ */
+@property (nonatomic, retain, readonly) NSDate *createdAt;
+
+/*!
+ The class name of the object.
+ */
+@property (readonly) NSString *className;
+
+/*!
+ The ACL for this object.
+ */
+@property (nonatomic, retain) PFACL *ACL;
+
+/*!
+ Returns an array of the keys contained in this object. This does not include
+ createdAt, updatedAt, authData, or objectId. It does include things like username
+ and ACL.
+ */
+- (NSArray *)allKeys;
+
+#pragma mark -
+#pragma mark Get and set
+
+/*!
+ Returns the object associated with a given key.
+ @param key The key that the object is associated with.
+ @result The value associated with the given key, or nil if no value is associated with key.
+ */
+- (id)objectForKey:(NSString *)key;
+
+/*!
+ Sets the object associated with a given key.
+ @param object The object.
+ @param key The key.
+ */
+- (void)setObject:(id)object forKey:(NSString *)key;
+
+/*!
+ Unsets a key on the object.
+ @param key The key.
+ */
+- (void)removeObjectForKey:(NSString *)key;
+
+/*!
+ * In LLVM 4.0 (XCode 4.5) or higher allows myPFObject[key].
+ @param key The key.
+ */
+- (id)objectForKeyedSubscript:(NSString *)key;
+
+/*!
+ * In LLVM 4.0 (XCode 4.5) or higher allows myObject[key] = value
+ @param object The object.
+ @param key The key.
+ */
+- (void)setObject:(id)object forKeyedSubscript:(NSString *)key;
+
+/*!
+ Returns the relation object associated with the given key 
+ @param key The key that the relation is associated with. 
+ */
+- (PFRelation *)relationforKey:(NSString *)key;
+
+#pragma mark -
+#pragma mark Array add and remove
+
+/*!
+ Adds an object to the end of the array associated with a given key.
+ @param object The object to add.
+ @param key The key.
+ */
+- (void)addObject:(id)object forKey:(NSString *)key;
+
+/*!
+ Adds the objects contained in another array to the end of the array associated
+ with a given key.
+ @param objects The array of objects to add.
+ @param key The key.
+ */
+- (void)addObjectsFromArray:(NSArray *)objects forKey:(NSString *)key;
+
+/*!
+ Adds an object to the array associated with a given key, only if it is not
+ already present in the array. The position of the insert is not guaranteed.
+ @param object The object to add.
+ @param key The key.
+ */
+- (void)addUniqueObject:(id)object forKey:(NSString *)key;
+
+/*!
+ Adds the objects contained in another array to the array associated with
+ a given key, only adding elements which are not already present in the array.
+ The position of the insert is not guaranteed.
+ @param objects The array of objects to add.
+ @param key The key.
+ */
+- (void)addUniqueObjectsFromArray:(NSArray *)objects forKey:(NSString *)key;
+
+/*!
+ Removes all occurrences of an object from the array associated with a given
+ key.
+ @param object The object to remove.
+ @param key The key.
+ */
+- (void)removeObject:(id)object forKey:(NSString *)key;
+
+/*!
+ Removes all occurrences of the objects contained in another array from the
+ array associated with a given key.
+ @param objects The array of objects to remove.
+ @param key The key.
+ */
+- (void)removeObjectsInArray:(NSArray *)objects forKey:(NSString *)key;
+
+#pragma mark -
+#pragma mark Increment
+
+/*!
+ Increments the given key by 1.
+ @param key The key.
+ */
+- (void)incrementKey:(NSString *)key;
+
+/*!
+ Increments the given key by a number.
+ @param key The key.
+ @param amount The amount to increment.
+ */
+- (void)incrementKey:(NSString *)key byAmount:(NSNumber *)amount;
+
+#pragma mark -
+#pragma mark Save
+
+/*! @name Saving an Object to Parse */
+
+/*!
+ Saves the PFObject.
+ @result Returns whether the save succeeded.
+ */
+- (BOOL)save;
+
+/*!
+ Saves the PFObject and sets an error if it occurs.
+ @param error Pointer to an NSError that will be set if necessary.
+ @result Returns whether the save succeeded.
+ */
+- (BOOL)save:(NSError **)error;
+
+/*!
+ Saves the PFObject asynchronously.
+ */
+- (void)saveInBackground;
+
+/*!
+ Saves the PFObject asynchronously and executes the given callback block.
+ @param block The block to execute. The block should have the following argument signature: (BOOL succeeded, NSError *error) 
+ */
+- (void)saveInBackgroundWithBlock:(PFBooleanResultBlock)block;
+
+/*!
+ Saves the PFObject asynchronously and calls the given callback.
+ @param target The object to call selector on.
+ @param selector The selector to call. It should have the following signature: (void)callbackWithResult:(NSNumber *)result error:(NSError *)error. error will be nil on success and set if there was an error. [result boolValue] will tell you whether the call succeeded or not.
+ */
+- (void)saveInBackgroundWithTarget:(id)target selector:(SEL)selector;
+
+/*!
+  @see saveEventually:
+ */
+- (void)saveEventually;
+
+/*!
+ Saves this object to the server at some unspecified time in the future, even if Parse is currently inaccessible.
+ Use this when you may not have a solid network connection, and don't need to know when the save completes.
+ If there is some problem with the object such that it can't be saved, it will be silently discarded.  If the save
+ completes successfully while the object is still in memory, then callback will be called.
+ 
+ Objects saved with this method will be stored locally in an on-disk cache until they can be delivered to Parse.
+ They will be sent immediately if possible.  Otherwise, they will be sent the next time a network connection is
+ available.  Objects saved this way will persist even after the app is closed, in which case they will be sent the
+ next time the app is opened.  If more than 10MB of data is waiting to be sent, subsequent calls to saveEventually
+ will cause old saves to be silently discarded until the connection can be re-established, and the queued objects
+ can be saved.
+ */
+- (void)saveEventually:(PFBooleanResultBlock)callback;
+
+#pragma mark -
+#pragma mark Save All
+
+/*! @name Saving Many Objects to Parse */
+
+/*!
+ Saves a collection of objects all at once.
+ @param objects The array of objects to save.
+ @result Returns whether the save succeeded.
+ */
++ (BOOL)saveAll:(NSArray *)objects;
+
+/*!
+ Saves a collection of objects all at once and sets an error if necessary.
+ @param objects The array of objects to save.
+ @param error Pointer to an NSError that will be set if necessary.
+ @result Returns whether the save succeeded.
+ */
++ (BOOL)saveAll:(NSArray *)objects error:(NSError **)error;
+
+/*!
+ Saves a collection of objects all at once asynchronously.
+ @param objects The array of objects to save.
+ */
++ (void)saveAllInBackground:(NSArray *)objects;
+
+/*!
+ Saves a collection of objects all at once asynchronously and the block when done.
+ @param objects The array of objects to save.
+ @param block The block to execute. The block should have the following argument signature: (BOOL succeeded, NSError *error) 
+ */
++ (void)saveAllInBackground:(NSArray *)objects
+                      block:(PFBooleanResultBlock)block;
+
+/*!
+ Saves a collection of objects all at once asynchronously and calls a callback when done.
+ @param objects The array of objects to save.
+ @param target The object to call selector on.
+ @param selector The selector to call. It should have the following signature: (void)callbackWithError:(NSError *)error. error will be nil on success and set if there was an error. 
+ */
++ (void)saveAllInBackground:(NSArray *)objects
+                     target:(id)target
+                   selector:(SEL)selector;
+
+#pragma mark -
+#pragma mark Refresh
+
+/*! @name Getting an Object from Parse */
+
+/*!
+ Gets whether the PFObject has been fetched.
+ @result YES if the PFObject is new or has been fetched or refreshed.  NO otherwise.
+ */
+- (BOOL)isDataAvailable;
+
+#if PARSE_IOS_ONLY
+// Deprecated and intentionally not available on the new OS X SDK
+
+/*!
+ Refreshes the PFObject with the current data from the server.
+ */
+- (void)refresh;
+
+/*!
+ Refreshes the PFObject with the current data from the server and sets an error if it occurs.
+ @param error Pointer to an NSError that will be set if necessary.
+ */
+- (void)refresh:(NSError **)error;
+
+/*!
+ Refreshes the PFObject asynchronously and executes the given callback block.
+ @param block The block to execute. The block should have the following argument signature: (PFObject *object, NSError *error) 
+ */
+- (void)refreshInBackgroundWithBlock:(PFObjectResultBlock)block;
+
+/*!
+ Refreshes the PFObject asynchronously and calls the given callback.
+ @param target The target on which the selector will be called.
+ @param selector The selector to call. It should have the following signature: (void)callbackWithResult:(PFObject *)refreshedObject error:(NSError *)error. error will be nil on success and set if there was an error. refreshedObject will be the PFObject with the refreshed data.
+ */
+- (void)refreshInBackgroundWithTarget:(id)target selector:(SEL)selector;
+#endif
+
+/*!
+ Fetches the PFObject with the current data from the server.
+ */
+- (void)fetch;
+/*!
+ Fetches the PFObject with the current data from the server and sets an error if it occurs.
+ @param error Pointer to an NSError that will be set if necessary.
+ */
+- (void)fetch:(NSError **)error;
+
+/*!
+ Fetches the PFObject's data from the server if isDataAvailable is false.
+ */
+- (PFObject *)fetchIfNeeded;
+
+/*!
+ Fetches the PFObject's data from the server if isDataAvailable is false.
+ @param error Pointer to an NSError that will be set if necessary.
+ */
+- (PFObject *)fetchIfNeeded:(NSError **)error;
+
+/*!
+ Fetches the PFObject asynchronously and executes the given callback block.
+ @param block The block to execute. The block should have the following argument signature: (PFObject *object, NSError *error) 
+ */
+- (void)fetchInBackgroundWithBlock:(PFObjectResultBlock)block;
+
+/*!
+ Fetches the PFObject asynchronously and calls the given callback.
+ @param target The target on which the selector will be called.
+ @param selector The selector to call. It should have the following signature: (void)callbackWithResult:(PFObject *)refreshedObject error:(NSError *)error. error will be nil on success and set if there was an error. refreshedObject will be the PFObject with the refreshed data.
+ */
+- (void)fetchInBackgroundWithTarget:(id)target selector:(SEL)selector;
+
+/*!
+ Fetches the PFObject's data asynchronously if isDataAvailable is false, then calls the callback block.
+ @param block The block to execute.  The block should have the following argument signature: (PFObject *object, NSError *error)
+ */
+- (void)fetchIfNeededInBackgroundWithBlock:(PFObjectResultBlock)block;
+
+/*!
+ Fetches the PFObject's data asynchronously if isDataAvailable is false, then calls the callback.
+ @param target The target on which the selector will be called.
+ @param selector The selector to call.  It should have the following signature: (void)callbackWithResult:(PFObject *)fetchedObject error:(NSError *)error. error will be nil on success and set if there was an error. 
+ */
+- (void)fetchIfNeededInBackgroundWithTarget:(id)target
+                                   selector:(SEL)selector;
+
+/*! @name Getting Many Objects from Parse */
+
+/*!
+ Fetches all of the PFObjects with the current data from the server