Fed up with different/inconsistent/non-existent SDKs for cloud file storage services? Try GDFileManagerKit! GDFileManagerKit lets you access Dropbox, Google Drive, SugarSync and WebDAV with a consistent, NSFileManager-like API.
Features of GDFileManagerKit include:
- Persistent cached file metadata. Old metadata is re-validated where possible making API calls more efficient.
- Cached file downloads.
- Chunked upload / downloads where available for reliability in intermittently connected environments.
- Copy/Delete/Move file operations.
- Aliases to keep track of files if the user moves / renames them remotely (requires a file service that supports persistent file identifiers like Google Drive or SugarSync).
GDFileManagerKit is currently beta-quality software, but I am using it in my app PocketBib. See my blog post for details.
File service list. To add an account, tap the 'plus' button.
Adding an account...
Downloading a file. (To upload a test file, tap the 'plus' button in the left navigation bar).
Get the contents of a directory:
[[GDFileManager sharedManager] getContentsOfDirectoryAtURL:url success:^(NSArray *contents) {
for (GDURLMetadata *metadata in contents) {
NSLog(@"Found %@ called \"%@\"", [metadata isDirectory] ? @"folder" : @"file", metadata.filename);
}
} failure:^(NSError *error) {
NSLog(@"error: %@", error);
}];
Check the local cache for the file, download it if it has been updated, and cache the result:
GDFileManager *fileManager = [GDFileManager new];
GDFileManagerDownloadOperation *downloadOperation = [fileManager cachedDownloadOperationFromSourceURL:url
success:^(NSURL *localURL, GDURLMetadata *metadata) {
NSLog(@"success: %@; metadata = %@", localURL, metadata);
} failure:^(NSError *error) {
if ([[error domain] isEqualToString:NSURLErrorDomain] && [error code] == NSURLErrorCancelled) {
} else
NSLog(@"download failed: %@", error);
}];
[fileManager enqueueFileManagerOperation:downloadOperation];
To set your Dropbox API key:
[GDDropboxAPIToken registerTokenWithKey:@"<dropbox_key>"
secret:@"<dropbox_secret>"
root:GDDropboxRootDropbox]; // This token has access to the entire dropbox folder
See the included GDFileManagerExample
for more examples. To run the demo app, run pod install
, and then open GDFileManagerExample.xcworkspace
and build.
iOS 5.0+, uses a number of external libraries including AFNetworking 1.x, SSKeychain, AFOAuth2Client.
GDFileManagerKit is available through CocoaPods, to install
it simply add the following line to your Podfile
:
pod "GDFileManagerKit"
Graham Dennis, graham@grahamdennis.me
GDFileManagerKit is available under the MIT license. See the LICENSE file for more info. If you require a non-attribution license, please contact me at graham@grahamdennis.me