aboutsummaryrefslogtreecommitdiff
path: root/backends/cloud/dropbox
diff options
context:
space:
mode:
Diffstat (limited to 'backends/cloud/dropbox')
-rw-r--r--backends/cloud/dropbox/dropboxlistdirectoryrequest.cpp1
-rw-r--r--backends/cloud/dropbox/dropboxlistdirectoryrequest.h2
-rw-r--r--backends/cloud/dropbox/dropboxstorage.cpp21
-rw-r--r--backends/cloud/dropbox/dropboxstorage.h9
4 files changed, 28 insertions, 5 deletions
diff --git a/backends/cloud/dropbox/dropboxlistdirectoryrequest.cpp b/backends/cloud/dropbox/dropboxlistdirectoryrequest.cpp
index e28a445d63..5e5957b12c 100644
--- a/backends/cloud/dropbox/dropboxlistdirectoryrequest.cpp
+++ b/backends/cloud/dropbox/dropboxlistdirectoryrequest.cpp
@@ -24,6 +24,7 @@
#include "backends/cloud/iso8601.h"
#include "backends/networking/curl/connectionmanager.h"
#include "backends/networking/curl/curljsonrequest.h"
+#include "common/json.h"
namespace Cloud {
namespace Dropbox {
diff --git a/backends/cloud/dropbox/dropboxlistdirectoryrequest.h b/backends/cloud/dropbox/dropboxlistdirectoryrequest.h
index 03b4fc121a..0c10512782 100644
--- a/backends/cloud/dropbox/dropboxlistdirectoryrequest.h
+++ b/backends/cloud/dropbox/dropboxlistdirectoryrequest.h
@@ -24,8 +24,8 @@
#define BACKENDS_CLOUD_DROPBOX_DROPBOXLISTDIRECTORYREQUEST_H
#include "backends/cloud/storage.h"
-#include "common/callback.h"
#include "backends/networking/curl/request.h"
+#include "common/callback.h"
namespace Cloud {
namespace Dropbox {
diff --git a/backends/cloud/dropbox/dropboxstorage.cpp b/backends/cloud/dropbox/dropboxstorage.cpp
index 6de9424efc..1b6dc1b92f 100644
--- a/backends/cloud/dropbox/dropboxstorage.cpp
+++ b/backends/cloud/dropbox/dropboxstorage.cpp
@@ -23,6 +23,7 @@
#include "backends/cloud/dropbox/dropboxstorage.h"
#include "backends/cloud/dropbox/dropboxlistdirectoryrequest.h"
+#include "backends/cloud/downloadrequest.h"
#include "backends/networking/curl/connectionmanager.h"
#include "backends/networking/curl/curljsonrequest.h"
#include "common/config-manager.h"
@@ -86,10 +87,28 @@ void DropboxStorage::listDirectory(Common::String path, FileArrayCallback outerC
ConnMan.addRequest(new DropboxListDirectoryRequest(_token, path, outerCallback, recursive));
}
+Networking::NetworkReadStream *DropboxStorage::streamFile(Common::String path) {
+ Common::JSONObject jsonRequestParameters;
+ jsonRequestParameters.setVal("path", new Common::JSONValue(path));
+ Common::JSONValue value(jsonRequestParameters);
+
+ Networking::CurlRequest *request = new Networking::CurlRequest(0, "https://content.dropboxapi.com/2/files/download");
+ request->addHeader("Authorization: Bearer " + _token);
+ request->addHeader("Dropbox-API-Arg: " + Common::JSON::stringify(&value));
+ request->addHeader("Content-Type: "); //required to be empty (as we do POST, it's usually app/form-url-encoded)
+
+ return request->execute();
+}
+
+void DropboxStorage::download(Common::String path, BoolCallback callback) {
+ ConnMan.addRequest(new DownloadRequest(callback, streamFile(path)));
+}
+
void DropboxStorage::syncSaves(BoolCallback callback) {
//this is not the real syncSaves() implementation
//"" is root in Dropbox, not "/"
- listDirectory("", new Common::Callback<DropboxStorage, Common::Array<StorageFile> >(this, &DropboxStorage::printFiles), true);
+ //listDirectory("", new Common::Callback<DropboxStorage, Common::Array<StorageFile> >(this, &DropboxStorage::printFiles), true);
+ download("/notempty.txt", 0);
}
void DropboxStorage::info(StorageInfoCallback outerCallback) {
diff --git a/backends/cloud/dropbox/dropboxstorage.h b/backends/cloud/dropbox/dropboxstorage.h
index c1c2e03497..92c3746da5 100644
--- a/backends/cloud/dropbox/dropboxstorage.h
+++ b/backends/cloud/dropbox/dropboxstorage.h
@@ -67,10 +67,13 @@ public:
virtual void listDirectory(Common::String path, FileArrayCallback callback, bool recursive = false);
/** Calls the callback when finished. */
- virtual void upload(Common::String path, Common::ReadStream* contents, BoolCallback callback) {} //TODO
+ virtual void upload(Common::String path, Common::ReadStream *contents, BoolCallback callback) {} //TODO
- /** Returns pointer to Common::ReadStream. */
- virtual void download(Common::String path, ReadStreamCallback callback) {} //TODO
+ /** Returns pointer to Networking::NetworkReadStream. */
+ virtual Networking::NetworkReadStream *streamFile(Common::String path);
+
+ /** Calls the callback when finished. */
+ virtual void download(Common::String path, BoolCallback callback);
/** Calls the callback when finished. */
virtual void remove(Common::String path, BoolCallback callback) {} //TODO