GoldRaccoon is the iOS component to connect to a FTP service and do the following:
- Download a file
- Upload a file
- Delete a file
- Create a directory
- Delete a directory
- List a directory
Why another Raccoon?
First, because the humanity needs it.
This project started on 29/06/2013 for the Objective-C Hackathon (http://objectivechackathon.appspot.com/).
GoldRaccoon aims to be an evolution of BlackRaccoon (which is an evolution of WhiteRaccoon), maybe the best (or at least one of the few) third-party component out there for handling FTP operations on iOS.
I forked the public repo of BlackRaccooon in May 2013 and added some improvements that have been merged into master to BlackRaccoon. Even though BlackRaccoon does what it says, I prefer to clean it a little and use a different and more extensible code structure.
- Done some deep refactoring for the bloating of the previous code;
- Added missing (and reasonable) code conventions;
- Added GRRequestsManager to manage all the different kind of requests using a FIFO queue;
- Added a demo project.
If you'd like to include this component as a pod using CocoaPods, just add the following line to your Podfile:
- copy Sources folder into your project
- add CFNetwork framework
GRRequestsManager.hin your class
- add a property for the manager
@property (nonatomic, strong) GRRequestsManager *requestsManager;
- setup the manager somewhere (with hostname, username and password)
self.requestsManager = [[GRRequestsManager alloc] initWithHostname:<hostname> user:<username> password:<password>];
- optionally make your class conform to
GRRequestsManagerDelegate, implement the delegate methods (basically success, failure and progress callbacks) and set your instance of this class as delegate for the manager
self.requestsManager.delegate = self;
- add the requests to the manager using the following methods:
addRequestForListDirectoryAtPath: addRequestForCreateDirectoryAtPath: addRequestForDeleteFileAtPath: addRequestForDeleteDirectoryAtPath: addRequestForDownloadFileAtRemotePath:toLocalPath: addRequestForUploadFileAtLocalPath:toRemotePath:
- start the manager