aboutsummaryrefslogtreecommitdiff
path: root/backends/cloud/onedrive/onedrivestorage.cpp
diff options
context:
space:
mode:
authorAlexander Tkachev2016-05-26 21:40:01 +0600
committerAlexander Tkachev2016-08-24 16:07:55 +0600
commit8f6bcdf55da97db98384c2a8cb9dcdf34232ac35 (patch)
treea1ec4f773c2891cf432f05af2461ca161959a017 /backends/cloud/onedrive/onedrivestorage.cpp
parentb246c17850687e7b15b644b761fbfe835ffc1c32 (diff)
downloadscummvm-rg350-8f6bcdf55da97db98384c2a8cb9dcdf34232ac35.tar.gz
scummvm-rg350-8f6bcdf55da97db98384c2a8cb9dcdf34232ac35.tar.bz2
scummvm-rg350-8f6bcdf55da97db98384c2a8cb9dcdf34232ac35.zip
CLOUD: Add OneDriveTokenRefresher
OneDriveTokenRefresher is a CurlJsonRequest replacement for OneDriveStorage methods. It behaves very similarly, but checks received JSON before passing it to user. If it contains "error" key, it attempts to refresh the token through OneDriveStorage, and then restarts the original request, so user won't notice that there ever was an error.
Diffstat (limited to 'backends/cloud/onedrive/onedrivestorage.cpp')
-rw-r--r--backends/cloud/onedrive/onedrivestorage.cpp16
1 files changed, 2 insertions, 14 deletions
diff --git a/backends/cloud/onedrive/onedrivestorage.cpp b/backends/cloud/onedrive/onedrivestorage.cpp
index 833ba8e558..6f91cadd37 100644
--- a/backends/cloud/onedrive/onedrivestorage.cpp
+++ b/backends/cloud/onedrive/onedrivestorage.cpp
@@ -31,6 +31,7 @@
#include <common/file.h>
#include "common/system.h"
#include "common/cloudmanager.h"
+#include "onedrivetokenrefresher.h"
namespace Cloud {
namespace OneDrive {
@@ -113,10 +114,6 @@ void OneDriveStorage::saveConfig(Common::String keyPrefix) {
ConfMan.set(keyPrefix + "refresh_token", _refreshToken, "cloud");
}
-void OneDriveStorage::printJsonTokenReceived(RequestBoolPair pair) {
- if (pair.value) syncSaves(0); //try again
-}
-
void OneDriveStorage::printJson(Networking::RequestJsonPair pair) {
Common::JSONValue *json = pair.value;
if (!json) {
@@ -124,15 +121,6 @@ void OneDriveStorage::printJson(Networking::RequestJsonPair pair) {
return;
}
- Common::JSONObject result = json->asObject();
- if (result.contains("error")) {
- //Common::JSONObject error = result.getVal("error")->asObject();
- debug("bad token, trying again...");
- getAccessToken(new Common::Callback<OneDriveStorage, RequestBoolPair>(this, &OneDriveStorage::printJsonTokenReceived));
- delete json;
- return;
- }
-
debug("%s", json->stringify().c_str());
delete json;
}
@@ -140,7 +128,7 @@ void OneDriveStorage::printJson(Networking::RequestJsonPair pair) {
int32 OneDriveStorage::syncSaves(BoolCallback callback) {
//this is not the real syncSaves() implementation
Networking::JsonCallback innerCallback = new Common::Callback<OneDriveStorage, Networking::RequestJsonPair>(this, &OneDriveStorage::printJson);
- Networking::CurlJsonRequest *request = new Networking::CurlJsonRequest(innerCallback, "https://api.onedrive.com/v1.0/drives/");
+ Networking::CurlJsonRequest *request = new OneDriveTokenRefresher(this, innerCallback, "https://api.onedrive.com/v1.0/drives/");
request->addHeader("Authorization: bearer " + _token);
return ConnMan.addRequest(request);
}