aboutsummaryrefslogtreecommitdiff
path: root/backends/cloud/dropbox/dropboxstorage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'backends/cloud/dropbox/dropboxstorage.cpp')
-rw-r--r--backends/cloud/dropbox/dropboxstorage.cpp41
1 files changed, 39 insertions, 2 deletions
diff --git a/backends/cloud/dropbox/dropboxstorage.cpp b/backends/cloud/dropbox/dropboxstorage.cpp
index f2270f79cd..94bdb43450 100644
--- a/backends/cloud/dropbox/dropboxstorage.cpp
+++ b/backends/cloud/dropbox/dropboxstorage.cpp
@@ -92,6 +92,30 @@ void infoCallback(Networking::Request* request, void *jsonPointer) {
}
}
+void info2Callback(Networking::Request* request, void *jsonPointer) {
+ if (!request) {
+ warning("infoCallback: got NULL instead of Request");
+
+ Common::JSONValue *json = (Common::JSONValue *)jsonPointer;
+ if (json) delete json; //yeah I know we can delete NULL safely
+ return;
+ }
+
+ Common::BaseCallback *callback = (Common::BaseCallback *)request->pointer();
+
+ Common::JSONValue *json = (Common::JSONValue *)jsonPointer;
+ if (json) {
+ //Common::JSONObject result = json->asObject();
+ if (callback) {
+ (*callback)(new StorageInfo(json->stringify()));
+ delete callback;
+ }
+ delete json;
+ } else {
+ warning("infoCallback: got NULL instead of JSON!");
+ }
+}
+
DropboxStorage::DropboxStorage(Common::String accessToken, Common::String userId): _token(accessToken), _uid(userId) {
curl_global_init(CURL_GLOBAL_ALL);
}
@@ -104,9 +128,14 @@ void syncSavesInfoCallback(StorageInfo info) {
debug("info: %s", info.info().c_str());
}
+void DropboxStorage::infoMethodCallback(void *storageInfo) {
+ StorageInfo *info = (StorageInfo *)storageInfo;
+ debug("info: %s", info->info().c_str());
+}
+
void DropboxStorage::syncSaves(OperationCallback callback) {
- //this is not the real syncSaves() implementation
- info(syncSavesInfoCallback);
+ //this is not the real syncSaves() implementation
+ info2(new Common::Callback<DropboxStorage>(this, &DropboxStorage::infoMethodCallback));
}
void DropboxStorage::info(InfoCallback callback) {
@@ -117,6 +146,14 @@ void DropboxStorage::info(InfoCallback callback) {
request->setPointer(callback);
}
+void DropboxStorage::info2(Common::Callback<DropboxStorage> *callback) {
+ Networking::CurlJsonRequest *request = new Networking::CurlJsonRequest(info2Callback, "https://api.dropboxapi.com/1/account/info");
+ request->addHeader("Authorization: Bearer " + _token);
+ ConnMan.addRequest(request);
+
+ request->setPointer(callback);
+}
+
DropboxStorage *DropboxStorage::loadFromConfig() {
KEY = ConfMan.get("DROPBOX_KEY", "cloud");
SECRET = ConfMan.get("DROPBOX_SECRET", "cloud");