A diagram showing the unified API of CloudRail

CloudRail is a free software library which abstracts multiple APIs from different providers into one single, universal interface.

Featured on / Referenced by

tc_nlogoho_nlogosdt_nlogonw_nlogodb_logophil_logo

Cloud Storage

Example Functions for Cloud Storage

// CloudStorage cs = new Box(context, "[clientIdentifier]", "[clientSecret]");
// CloudStorage cs = new OneDrive(context, "[clientIdentifier]", "[clientSecret]");
// CloudStorage cs = new GoogleDrive(context, "[clientIdentifier]", "[clientSecret]");
CloudStorage cs = new Dropbox(context, "[clientIdentifier]", "[clientSecret]");
new Thread() {
    @Override
    public void run() {
        cs.createFolder("/TestFolder"); // <---
        InputStream stream = null;
        try {
            AssetManager assetManager = getAssets();
            stream = assetManager.open("UserData.csv");
            long size = assetManager.openFd("UserData.csv").getLength();
            cs.upload("/TestFolder/Data.csv", stream, size, false); // <---
        } catch (Exception e) {
            // TODO: handle error
        } finally {
            // TODO: close stream
        }
    }
}.start();

Example Functions for Cloud Storage

#import <CloudRail_ServiceCode/CloudRail_ServiceCode.h>

@interface CRViewController ()
@property (nonatomic) Dropbox * dropbox;
@property (nonatomic) GoogleDrive * googleDrive;
//@property (nonatomic) OneDrive * oneDrive;
//@property (nonatomic) Box * box;
@end
@implementation CRViewController
- (void)viewDidLoad
{
  [super viewDidLoad];
  self.dropbox = [[Dropbox alloc] initWithClientId:@"clientIdentifier" clientSecret:@"clientSecret"];
  self.dropbox = [[GoogleDrive alloc] initWithClientId:@"clientIdentifier" clientSecret:@"clientSecret"];  
}
-(void)downloadAndUpload{
  //Download File from Dropbox
  NSInputStream * streamToDownloadedFile = [self.dropbox downloadWithFilePath:@"/mudkip.jpg"];
  //Upload the downloaded file to Googledrive
  [self.googleDrive uploadWithFilePath:@"/mudkip.jpg" inputStream:streamToDownloadedFile size:size];
}
@end
Social Media

Example Functions for Social Media


// final Profile profile = new GooglePlus(this, "[clientIdentifier]", "[clientSecret]");
// final Profile profile = new GitHub(this, "[clientIdentifier]", "[clientSecret]");
// final Profile profile = new Slack(this, "[clientIdentifier]", "[clientSecret]");
// ...
final Profile profile = new Facebook(this, "[clientIdentifier]", "[clientSecret]");
new Thread() {
    @Override
    public void run() {
        String fullName = profile.getFullName();
        String email = profile.getEmail();
        // ...
    }
}.start();

Example Functions for Social Media

#import <CloudRail_ServiceCode/CloudRail_ServiceCode.h>

@interface CRViewController ()
@property (nonatomic) Dropbox * dropbox;
@property (nonatomic) GoogleDrive * googleDrive;
//@property (nonatomic) OneDrive * oneDrive;
//@property (nonatomic) Box * box;
@end
@implementation CRViewController
- (void)viewDidLoad
{
  [super viewDidLoad];
  self.dropbox = [[Dropbox alloc] initWithClientId:@"clientIdentifier" clientSecret:@"clientSecret"];
  self.dropbox = [[GoogleDrive alloc] initWithClientId:@"clientIdentifier" clientSecret:@"clientSecret"];  
}
-(void)downloadAndUpload{
  //Download File from Dropbox
  NSInputStream * streamToDownloadedFile = [self.dropbox downloadWithFilePath:@"/mudkip.jpg"];
  //Upload the downloaded file to Googledrive
  [self.googleDrive uploadWithFilePath:@"/mudkip.jpg" inputStream:streamToDownloadedFile size:size];
}
@end

An API Abstraction Layer

CloudRail gives you functions that work across multiple providers. Need to upload a file? Use the same function no matter the Cloud Storage service. Supporting more than one service? Do multiple integrations in the same time you need for one.

Easily Switch Services

Ever used an external API, then changed it? You’ll have had to comb through all of your code. You’ll have had unexpected bugs. You will have had your time sucked away. CloudRail solves this. Changing a service? Just change one line of code. Your whole program works just as expected.

Authentication. The Easy Way

The normal way of authentication: Reading overwritten documentation. Debugging multiple lines of code. Passing on API keys for every request. With CloudRail, for virtually all services, only two lines are needed. In your whole codebase.

No Maintenance Time

Providers change their APIs all the time. Every change creates more development time for you. New code to update. New errors to debug. New ways for your program to crash. Not anymore. We update CloudRail to all of these API changes, so you don’t have to.

CloudRail is Free on Github

iOS Library

Android Library

Or get via Maven

repositories {
    maven {
        url "http://maven.cloudrail.com"
    }
}

dependencies {
    compile 'com.cloudrail:cloudrail-si-android:2.1.0'
}

Available Interfaces

Cloud Storage

Cloud Storage Interface

Need somewhere for your users to save their files?. Using CloudRail, you can upload to any Cloud Storage service. Or all of them. Or one that you choose at run time.

Allow your users to save their files in exactly the way they want, without forcing them to go to a different service just because that one is better documented. With CloudRail, you are able to keep everyone happy, without adding extra development time or stress upon your resources.

Popular services integrated with CloudRail include Dropbox, Google Drive, Box and OneDrive.

ALL of the Setup Code

public class MainActivity extends AppCompatActivity {
    private com.cloudrail.si.cloudStorage.CloudStorage cs;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        cs = new com.cloudrail.si.cloudStorage.Box(
          this, 
          /** Your Client ID **/, 
          /** Your Client Secret**/
        ); // This could also be Dropbox, GoogleDrive or OneDrive
    }
}

Popular Available Interfaces

onedrive_apibox_apidropbox_apigoogle_drive_api

Check if a provider has CloudRail support
We’ve let our engineers know you want this. Why not add your email address and get updated when we add it.

Social Media

Social Media Interface

Using the Social Media API, you can access a range of different social media services. You can get information from the users, as well as allow them to use their social media network to log into your application.

With the social media interface, you can get all of the information that you require from a user logging into their social media channels. This includes names (first and last), email addresses, profile pictures, and more.

You are also able to use these Social Media logins as a replacement for any login screen on your application, making it more likely for a user to give you their details.

Popular services integrated with CloudRail include Facebook, Twitter, Google Plus, LinkedIn, Windows Live, Yahoo, Slack and GitHub.

ALL of the Setup Code

// final Profile profile = new GooglePlus(this, "[clientIdentifier]", "[clientSecret]");
// final Profile profile = new GitHub(this, "[clientIdentifier]", "[clientSecret]");
// final Profile profile = new Slack(this, "[clientIdentifier]", "[clientSecret]");
// ...
final Profile profile = new Facebook(this, "[clientIdentifier]", "[clientSecret]");
new Thread() {
    @Override
    public void run() {
        String fullName = profile.getFullName();
        String email = profile.getEmail();
        // ...
    }
}.start();

Popular Available Interfaces

socialmediainterface (1)

Check if a provider has CloudRail support
We’ve let our engineers know you want this. Why not add your email address and get updated when we add it.

View CloudRail on Github