aboutsummaryrefslogtreecommitdiff
path: root/backends/cloud/dropbox
diff options
context:
space:
mode:
authorAlexander Tkachev2016-05-18 15:21:09 +0600
committerAlexander Tkachev2016-08-24 16:07:55 +0600
commit0a947618fb1faa023df03d355e9749905424dd58 (patch)
treedb663626a23c333da1f9279cd6f92e8ce9c6e610 /backends/cloud/dropbox
parente743a65636a674def45e955cb7a5632aead2a033 (diff)
downloadscummvm-rg350-0a947618fb1faa023df03d355e9749905424dd58.tar.gz
scummvm-rg350-0a947618fb1faa023df03d355e9749905424dd58.tar.bz2
scummvm-rg350-0a947618fb1faa023df03d355e9749905424dd58.zip
CLOUD: Make ConnectionManager singleton
With ConnectionManager singleton one can start their Requests without creating Storage instance. Moreover, Storage instance should contain cloud API, not Requests-related handling and timer starting methods. Thus, these methods were moved into ConnectionManager itself.
Diffstat (limited to 'backends/cloud/dropbox')
-rw-r--r--backends/cloud/dropbox/dropboxstorage.cpp26
-rw-r--r--backends/cloud/dropbox/dropboxstorage.h8
2 files changed, 14 insertions, 20 deletions
diff --git a/backends/cloud/dropbox/dropboxstorage.cpp b/backends/cloud/dropbox/dropboxstorage.cpp
index add6bff54c..93f0eebcf6 100644
--- a/backends/cloud/dropbox/dropboxstorage.cpp
+++ b/backends/cloud/dropbox/dropboxstorage.cpp
@@ -22,6 +22,7 @@
#define FORBIDDEN_SYMBOL_ALLOW_ALL
#include "backends/cloud/dropbox/dropboxstorage.h"
+#include "backends/networking/curl/connectionmanager.h"
#include "backends/networking/curl/curljsonrequest.h"
#include "common/config-manager.h"
#include "common/debug.h"
@@ -76,8 +77,7 @@ DropboxStorage::~DropboxStorage() {
curl_global_cleanup();
}
-void DropboxStorage::listDirectory(Common::String path) {
- startTimer(1000000); //in one second
+void DropboxStorage::listDirectory(Common::String path) {
}
void DropboxStorage::syncSaves() {
@@ -88,7 +88,7 @@ void DropboxStorage::syncSaves() {
void DropboxStorage::printInfo() {
Networking::CurlJsonRequest *request = new Networking::CurlJsonRequest(printJsonCallback, "https://api.dropboxapi.com/1/account/info");
request->addHeader("Authorization: Bearer " + _token);
- addRequest(request);
+ ConnMan.addRequest(request);
}
DropboxStorage *DropboxStorage::loadFromConfig() {
@@ -119,10 +119,10 @@ Common::String DropboxStorage::getAuthLink() {
return url;
}
-DropboxStorage *DropboxStorage::authThroughConsole() {
+void DropboxStorage::authThroughConsole() {
if (!ConfMan.hasKey("DROPBOX_KEY", "cloud") || !ConfMan.hasKey("DROPBOX_SECRET", "cloud")) {
warning("No Dropbox keys available, cannot do auth");
- return 0;
+ return;
}
KEY = ConfMan.get("DROPBOX_KEY", "cloud");
@@ -130,29 +130,25 @@ DropboxStorage *DropboxStorage::authThroughConsole() {
if (ConfMan.hasKey("dropbox_code", "cloud")) {
//phase 2: get access_token using specified code
- return getAccessToken(ConfMan.get("dropbox_code", "cloud"));
+ getAccessToken(ConfMan.get("dropbox_code", "cloud"));
+ return;
}
debug("Navigate to this URL and press \"Allow\":");
debug("%s\n", getAuthLink().c_str());
debug("Then, add dropbox_code key in [cloud] section of configuration file. You should copy the <code> value from URL and put it as value for that key.\n");
debug("Navigate to this URL to get more information on ScummVM's configuration files:");
- debug("http://wiki.scummvm.org/index.php/User_Manual/Configuring_ScummVM#Using_the_configuration_file_to_configure_ScummVM\n");
- return 0;
+ debug("http://wiki.scummvm.org/index.php/User_Manual/Configuring_ScummVM#Using_the_configuration_file_to_configure_ScummVM\n");
}
-DropboxStorage *DropboxStorage::getAccessToken(Common::String code) {
+void DropboxStorage::getAccessToken(Common::String code) {
Networking::CurlJsonRequest *request = new Networking::CurlJsonRequest(saveAccessTokenCallback, "https://api.dropboxapi.com/1/oauth2/token");
request->addPostField("code=" + code);
request->addPostField("grant_type=authorization_code");
request->addPostField("client_id=" + KEY);
request->addPostField("client_secret=" + SECRET);
- request->addPostField("&redirect_uri=http%3A%2F%2Flocalhost%3A12345%2F");
-
- //OK, that's not how I imagined that...
- DropboxStorage *storage = new DropboxStorage("", "");
- storage->addRequest(request);
- return storage;
+ request->addPostField("&redirect_uri=http%3A%2F%2Flocalhost%3A12345%2F");
+ ConnMan.addRequest(request);
}
} //end of namespace Dropbox
diff --git a/backends/cloud/dropbox/dropboxstorage.h b/backends/cloud/dropbox/dropboxstorage.h
index f2281f146f..0500db5d49 100644
--- a/backends/cloud/dropbox/dropboxstorage.h
+++ b/backends/cloud/dropbox/dropboxstorage.h
@@ -24,7 +24,7 @@
#define BACKENDS_CLOUD_DROPBOX_STORAGE_H
#include "backends/cloud/storage.h"
-#include "../manager.h"
+#include "backends/cloud/manager.h"
namespace Cloud {
namespace Dropbox {
@@ -37,7 +37,7 @@ class DropboxStorage: public Cloud::Storage {
/** This private constructor is called from loadFromConfig(). */
DropboxStorage(Common::String token, Common::String uid);
- static DropboxStorage *getAccessToken(Common::String code);
+ static void getAccessToken(Common::String code);
public:
virtual ~DropboxStorage();
@@ -58,10 +58,8 @@ public:
/**
* Show message with Dropbox auth instructions. (Temporary)
- * Returns temporary DropboxStorage, which does network requests
- * to get access token.
*/
- static DropboxStorage *authThroughConsole();
+ static void authThroughConsole();
};
} //end of namespace Dropbox