123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- //
- // DBRestClient.h
- // DropboxSDK
- //
- // Created by Brian Smith on 4/9/10.
- // Copyright 2010 Dropbox, Inc. All rights reserved.
- //
- #import "DBSession.h"
- @protocol DBRestClientDelegate;
- @class DBAccountInfo;
- @class DBMetadata;
- @interface DBRestClient : NSObject {
- DBSession* session;
- NSString* userId;
- NSString* root;
- NSMutableSet* requests;
- /* Map from path to the load request. Needs to be expanded to a general framework for cancelling
- requests. */
- NSMutableDictionary* loadRequests;
- NSMutableDictionary* imageLoadRequests;
- NSMutableDictionary* uploadRequests;
- id<DBRestClientDelegate> delegate;
- }
- - (id)initWithSession:(DBSession*)session;
- - (id)initWithSession:(DBSession *)session userId:(NSString *)userId;
- /* Cancels all outstanding requests. No callback for those requests will be sent */
- - (void)cancelAllRequests;
- /* Loads metadata for the object at the given root/path and returns the result to the delegate as a
- dictionary */
- - (void)loadMetadata:(NSString*)path withHash:(NSString*)hash;
- - (void)loadMetadata:(NSString*)path;
- /* This will load the metadata of a file at a given rev */
- - (void)loadMetadata:(NSString *)path atRev:(NSString *)rev;
- /* Loads a list of files (represented as DBDeltaEntry objects) that have changed since the cursor was generated */
- - (void)loadDelta:(NSString *)cursor;
- /* Loads the file contents at the given root/path and stores the result into destinationPath */
- - (void)loadFile:(NSString *)path intoPath:(NSString *)destinationPath;
- /* This will load a file as it existed at a given rev */
- - (void)loadFile:(NSString *)path atRev:(NSString *)rev intoPath:(NSString *)destPath;
- - (void)cancelFileLoad:(NSString*)path;
- - (void)loadThumbnail:(NSString *)path ofSize:(NSString *)size intoPath:(NSString *)destinationPath;
- - (void)cancelThumbnailLoad:(NSString*)path size:(NSString*)size;
- /* Uploads a file that will be named filename to the given path on the server. sourcePath is the
- full path of the file you want to upload. If you are modifying a file, parentRev represents the
- rev of the file before you modified it as returned from the server. If you are uploading a new
- file set parentRev to nil. */
- - (void)uploadFile:(NSString *)filename toPath:(NSString *)path withParentRev:(NSString *)parentRev
- fromPath:(NSString *)sourcePath;
- - (void)cancelFileUpload:(NSString *)path;
- /* Avoid using this because it is very easy to overwrite conflicting changes. Provided for backwards
- compatibility reasons only */
- - (void)uploadFile:(NSString*)filename toPath:(NSString*)path fromPath:(NSString *)sourcePath __attribute__((deprecated));
- /* These calls allow you to upload files in chunks, which is better for file larger than a few megabytes.
- You can append bytes to the file using -[DBRestClient uploadFileChunk:offset:uploadId:] and then call
- -[DBRestClient uploadFile:toPath:withParentRev:fromUploadId:] to turn the bytes appended at that uploadId
- into an actual file in the user's Dropbox.
- Use a nil uploadId to start uploading a new file. */
- - (void)uploadFileChunk:(NSString *)uploadId offset:(unsigned long long)offset fromPath:(NSString *)localPath;
- - (void)uploadFile:(NSString *)filename toPath:(NSString *)parentFolder withParentRev:(NSString *)parentRev
- fromUploadId:(NSString *)uploadId;
- /* Loads a list of up to 10 DBMetadata objects representing past revisions of the file at path */
- - (void)loadRevisionsForFile:(NSString *)path;
- /* Same as above but with a configurable limit to number of DBMetadata objects returned, up to 1000 */
- - (void)loadRevisionsForFile:(NSString *)path limit:(NSInteger)limit;
- /* Restores a file at path as it existed at the given rev and returns the metadata of the restored
- file after restoration */
- - (void)restoreFile:(NSString *)path toRev:(NSString *)rev;
- /* Creates a folder at the given root/path */
- - (void)createFolder:(NSString*)path;
- - (void)deletePath:(NSString*)path;
- - (void)copyFrom:(NSString*)fromPath toPath:(NSString *)toPath;
- - (void)createCopyRef:(NSString *)path; // Used to copy between Dropboxes
- - (void)copyFromRef:(NSString*)copyRef toPath:(NSString *)toPath; // Takes copy ref created by above call
- - (void)moveFrom:(NSString*)fromPath toPath:(NSString *)toPath;
- - (void)loadAccountInfo;
- - (void)searchPath:(NSString*)path forKeyword:(NSString*)keyword;
- - (void)loadSharableLinkForFile:(NSString *)path;
- - (void)loadSharableLinkForFile:(NSString *)path shortUrl:(BOOL)createShortUrl;
- - (void)loadStreamableURLForFile:(NSString *)path;
- - (NSUInteger)requestCount;
- @property (nonatomic, assign) id<DBRestClientDelegate> delegate;
- @end
- /* The delegate provides allows the user to get the result of the calls made on the DBRestClient.
- Right now, the error parameter of failed calls may be nil and [error localizedDescription] does
- not contain an error message appropriate to show to the user. */
- @protocol DBRestClientDelegate <NSObject>
- @optional
- - (void)restClient:(DBRestClient*)client loadedMetadata:(DBMetadata*)metadata;
- - (void)restClient:(DBRestClient*)client metadataUnchangedAtPath:(NSString*)path;
- - (void)restClient:(DBRestClient*)client loadMetadataFailedWithError:(NSError*)error;
- // [error userInfo] contains the root and path of the call that failed
- - (void)restClient:(DBRestClient*)client loadedDeltaEntries:(NSArray *)entries reset:(BOOL)shouldReset cursor:(NSString *)cursor hasMore:(BOOL)hasMore;
- - (void)restClient:(DBRestClient*)client loadDeltaFailedWithError:(NSError *)error;
- - (void)restClient:(DBRestClient*)client loadedAccountInfo:(DBAccountInfo*)info;
- - (void)restClient:(DBRestClient*)client loadAccountInfoFailedWithError:(NSError*)error;
- - (void)restClient:(DBRestClient*)client loadedFile:(NSString*)destPath;
- // Implement the following callback instead of the previous if you care about the value of the
- // Content-Type HTTP header and the file metadata. Only one will be called per successful response.
- - (void)restClient:(DBRestClient*)client loadedFile:(NSString*)destPath contentType:(NSString*)contentType metadata:(DBMetadata*)metadata;
- - (void)restClient:(DBRestClient*)client loadProgress:(CGFloat)progress forFile:(NSString*)destPath;
- - (void)restClient:(DBRestClient*)client loadFileFailedWithError:(NSError*)error;
- // [error userInfo] contains the destinationPath
- - (void)restClient:(DBRestClient*)client loadedThumbnail:(NSString*)destPath metadata:(DBMetadata*)metadata;
- - (void)restClient:(DBRestClient*)client loadThumbnailFailedWithError:(NSError*)error;
- - (void)restClient:(DBRestClient*)client uploadedFile:(NSString*)destPath from:(NSString*)srcPath
- metadata:(DBMetadata*)metadata;
- - (void)restClient:(DBRestClient*)client uploadProgress:(CGFloat)progress
- forFile:(NSString*)destPath from:(NSString*)srcPath;
- - (void)restClient:(DBRestClient*)client uploadFileFailedWithError:(NSError*)error;
- // [error userInfo] contains the sourcePath
- - (void)restClient:(DBRestClient *)client uploadedFileChunk:(NSString *)uploadId newOffset:(unsigned long long)offset
- fromFile:(NSString *)localPath expires:(NSDate *)expiresDate;
- - (void)restClient:(DBRestClient *)client uploadFileChunkFailedWithError:(NSError *)error;
- - (void)restClient:(DBRestClient *)client uploadFileChunkProgress:(CGFloat)progress
- forFile:(NSString *)uploadId offset:(unsigned long long)offset fromPath:(NSString *)localPath;
- - (void)restClient:(DBRestClient *)client uploadedFile:(NSString *)destPath fromUploadId:(NSString *)uploadId
- metadata:(DBMetadata *)metadata;
- - (void)restClient:(DBRestClient *)client uploadFromUploadIdFailedWithError:(NSError *)error;
- // Deprecated upload callback
- - (void)restClient:(DBRestClient*)client uploadedFile:(NSString*)destPath from:(NSString*)srcPath;
- // Deprecated download callbacks
- - (void)restClient:(DBRestClient*)client loadedFile:(NSString*)destPath contentType:(NSString*)contentType;
- - (void)restClient:(DBRestClient*)client loadedThumbnail:(NSString*)destPath;
- - (void)restClient:(DBRestClient*)client loadedRevisions:(NSArray *)revisions forFile:(NSString *)path;
- - (void)restClient:(DBRestClient*)client loadRevisionsFailedWithError:(NSError *)error;
- - (void)restClient:(DBRestClient*)client restoredFile:(DBMetadata *)fileMetadata;
- - (void)restClient:(DBRestClient*)client restoreFileFailedWithError:(NSError *)error;
- - (void)restClient:(DBRestClient*)client createdFolder:(DBMetadata*)folder;
- // Folder is the metadata for the newly created folder
- - (void)restClient:(DBRestClient*)client createFolderFailedWithError:(NSError*)error;
- // [error userInfo] contains the root and path
- - (void)restClient:(DBRestClient*)client deletedPath:(NSString *)path;
- - (void)restClient:(DBRestClient*)client deletePathFailedWithError:(NSError*)error;
- // [error userInfo] contains the root and path
- - (void)restClient:(DBRestClient*)client copiedPath:(NSString *)fromPath to:(DBMetadata *)to;
- - (void)restClient:(DBRestClient*)client copyPathFailedWithError:(NSError*)error;
- // [error userInfo] contains the root and path
- - (void)restClient:(DBRestClient*)client createdCopyRef:(NSString *)copyRef forPath:(NSString *)path;
- - (void)restClient:(DBRestClient*)client createCopyRefFailedWithError:(NSError *)error;
- // Deprecated copy ref callback
- - (void)restClient:(DBRestClient*)client createdCopyRef:(NSString *)copyRef;
- - (void)restClient:(DBRestClient*)client copiedRef:(NSString *)copyRef to:(DBMetadata *)to;
- - (void)restClient:(DBRestClient*)client copyFromRefFailedWithError:(NSError*)error;
- - (void)restClient:(DBRestClient*)client movedPath:(NSString *)from_path to:(DBMetadata *)result;
- - (void)restClient:(DBRestClient*)client movePathFailedWithError:(NSError*)error;
- // [error userInfo] contains the root and path
- - (void)restClient:(DBRestClient*)restClient loadedSearchResults:(NSArray*)results
- forPath:(NSString*)path keyword:(NSString*)keyword;
- // results is a list of DBMetadata * objects
- - (void)restClient:(DBRestClient*)restClient searchFailedWithError:(NSError*)error;
- - (void)restClient:(DBRestClient*)restClient loadedSharableLink:(NSString*)link
- forFile:(NSString*)path;
- - (void)restClient:(DBRestClient*)restClient loadSharableLinkFailedWithError:(NSError*)error;
- - (void)restClient:(DBRestClient*)restClient loadedStreamableURL:(NSURL*)url forFile:(NSString*)path;
- - (void)restClient:(DBRestClient*)restClient loadStreamableURLFailedWithError:(NSError*)error;
- @end
|