package com.cloudrail.fileviewer;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import com.cloudrail.si.CloudRail;
import com.cloudrail.si.exceptions.ParseException;
import com.cloudrail.si.services.Box;
import com.cloudrail.si.interfaces.CloudStorage;
import com.cloudrail.si.services.Dropbox;
import com.cloudrail.si.services.GoogleDrive;
import com.cloudrail.si.services.OneDrive;
import java.util.concurrent.atomic.AtomicReference;
/**
* This class encapsulates the different services being used by the application. It also initializes
* them and persists the authentication data.
*
* @author patrick
*/
class Services {
private final static String CLOUDRAIL_LICENSE_KEY = "<Your CloudRail License Key>";
private final static Services ourInstance = new Services();
private final AtomicReference<CloudStorage> dropbox = new AtomicReference<>();
private final AtomicReference<CloudStorage> box = new AtomicReference<>();
private final AtomicReference<CloudStorage> googledrive = new AtomicReference<>();
private final AtomicReference<CloudStorage> onedrive = new AtomicReference<>();
private Activity context = null;
static Services getInstance() {
return ourInstance;
}
private Services() {
}
private void initDropbox() {
dropbox.set(new Dropbox(context, "u4gevj9clhvdjug", "9ol49hdlk8by9v9"));
}
private void initBox() {
box.set(new Box(context, "zqgl7zrzxei2c076ss5k9hxf2ivbppfa", "ueG5uWHUarWYQNgldCsCwUwGzvSWlR0Y"));
}
private void initGoogleDrive() {
googledrive.set(new GoogleDrive(context, "638240013795-966s147hdhg5o4j2mugs67k64pbitrdt.apps.googleusercontent.com", "", "com.cloudrail.fileviewer:/oauth2redirect", ""));
((GoogleDrive) googledrive.get()).useAdvancedAuthentication();
}
private void initOneDrive() {
onedrive.set(new OneDrive(context, "000000004018F12F", "lGQPubehDO6eklir1GQmIuCPFfzwihMo"));
}
// --------- Public Methods -----------
void prepare(Activity context) {
this.context = context;
CloudRail.setAppKey(CLOUDRAIL_LICENSE_KEY);
this.initDropbox();
this.initBox();
this.initGoogleDrive();
this.initOneDrive();
SharedPreferences sharedPreferences = context.getPreferences(Context.MODE_PRIVATE);
try {
String persistent = sharedPreferences.getString("dropboxPersistent", null);
if (persistent != null) dropbox.get().loadAsString(persistent);
persistent = sharedPreferences.getString("boxPersistent", null);
if (persistent != null) box.get().loadAsString(persistent);
persistent = sharedPreferences.getString("googledrivePersistent", null);
if (persistent != null) googledrive.get().loadAsString(persistent);
persistent = sharedPreferences.getString("onedrivePersistent", null);
if (persistent != null) onedrive.get().loadAsString(persistent);
} catch (ParseException e) {}
}
CloudStorage getService(int service) {
AtomicReference<CloudStorage> ret = new AtomicReference<>();
switch (service) {
case 1:
ret = this.dropbox;
break;
case 2:
ret = this.box;
break;
case 3:
ret = this.googledrive;
break;
case 4:
ret = this.onedrive;
break;
default:
throw new IllegalArgumentException("Unknown service!");
}
return ret.get();
}
void storePersistent() {
SharedPreferences sharedPreferences = context.getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("dropboxPersistent", dropbox.get().saveAsString());
editor.putString("boxPersistent", box.get().saveAsString());
editor.putString("googledrivePersistent", googledrive.get().saveAsString());
editor.putString("onedrivePersistent", onedrive.get().saveAsString());
editor.apply();
}
}