Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
The iOS component to connect to a FTP service and perform the operations you need.
branch: master

README.md

GoldRaccoon

General Notes

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.

Most of the code is therefore written by Valentin Radu and Lloyd Sargent, the main extensions I (Alberto De Bortoli) added are:

  • 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.

Usage

If you'd like to include this component as a pod using CocoaPods, just add the following line to your Podfile:

pod "GoldRaccoon"

otherwise

  • copy Sources folder into your project
  • add CFNetwork framework
  • import GRRequestsManager.h in 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
[self.requestsManager startProcessingRequests];
Something went wrong with that request. Please try again.