diff options
author | Alexander Tkachev | 2016-05-27 22:33:39 +0600 |
---|---|---|
committer | Alexander Tkachev | 2016-08-24 16:07:55 +0600 |
commit | 8aa87815a62117c5fd29b335c8e33b0cbea0da44 (patch) | |
tree | c893d5af9c61e35c72f07eb90b4ddd351d525053 /backends/cloud | |
parent | 1dfa73b8f863972f513d9d04b995cb7316365a8c (diff) | |
download | scummvm-rg350-8aa87815a62117c5fd29b335c8e33b0cbea0da44.tar.gz scummvm-rg350-8aa87815a62117c5fd29b335c8e33b0cbea0da44.tar.bz2 scummvm-rg350-8aa87815a62117c5fd29b335c8e33b0cbea0da44.zip |
CLOUD: Fix "global destructor" warning
Plain char * is used instead of Common::String in DropboxStorage and
OneDriveStorage's KEY and SECRET.
Diffstat (limited to 'backends/cloud')
-rw-r--r-- | backends/cloud/dropbox/dropboxstorage.cpp | 28 | ||||
-rw-r--r-- | backends/cloud/dropbox/dropboxstorage.h | 4 | ||||
-rw-r--r-- | backends/cloud/onedrive/onedrivestorage.cpp | 28 | ||||
-rw-r--r-- | backends/cloud/onedrive/onedrivestorage.h | 4 |
4 files changed, 44 insertions, 20 deletions
diff --git a/backends/cloud/dropbox/dropboxstorage.cpp b/backends/cloud/dropbox/dropboxstorage.cpp index 379d7bb611..3d7eafedeb 100644 --- a/backends/cloud/dropbox/dropboxstorage.cpp +++ b/backends/cloud/dropbox/dropboxstorage.cpp @@ -36,8 +36,20 @@ namespace Cloud { namespace Dropbox { -Common::String DropboxStorage::KEY; //can't use ConfMan there yet, loading it on instance creation/auth -Common::String DropboxStorage::SECRET; //TODO: hide these secrets somehow +char *DropboxStorage::KEY; //can't use ConfMan there yet, loading it on instance creation/auth +char *DropboxStorage::SECRET; //TODO: hide these secrets somehow + +void DropboxStorage::loadKeyAndSecret() { + Common::String k = ConfMan.get("DROPBOX_KEY", "cloud"); + KEY = new char[k.size() + 1]; + memcpy(KEY, k.c_str(), k.size()); + KEY[k.size()] = 0; + + k = ConfMan.get("DROPBOX_SECRET", "cloud"); + SECRET = new char[k.size() + 1]; + memcpy(SECRET, k.c_str(), k.size()); + SECRET[k.size()] = 0; +} static void saveAccessTokenCallback(Networking::JsonResponse pair) { Common::JSONValue *json = (Common::JSONValue *)pair.value; @@ -178,8 +190,7 @@ void DropboxStorage::infoMethodCallback(StorageInfoResponse pair) { } DropboxStorage *DropboxStorage::loadFromConfig(Common::String keyPrefix) { - KEY = ConfMan.get("DROPBOX_KEY", "cloud"); - SECRET = ConfMan.get("DROPBOX_SECRET", "cloud"); + loadKeyAndSecret(); if (!ConfMan.hasKey(keyPrefix + "access_token", "cloud")) { warning("No access_token found"); @@ -201,7 +212,7 @@ Common::String DropboxStorage::getAuthLink() { url += "?response_type=code"; url += "&redirect_uri=http://localhost:12345/"; //that's for copy-pasting //url += "&redirect_uri=http%3A%2F%2Flocalhost%3A12345%2F"; //that's "http://localhost:12345/" for automatic opening - url += "&client_id=" + KEY; + url += "&client_id="; url += KEY; return url; } @@ -211,8 +222,7 @@ void DropboxStorage::authThroughConsole() { return; } - KEY = ConfMan.get("DROPBOX_KEY", "cloud"); - SECRET = ConfMan.get("DROPBOX_SECRET", "cloud"); + loadKeyAndSecret(); if (ConfMan.hasKey("dropbox_code", "cloud")) { //phase 2: get access_token using specified code @@ -232,8 +242,8 @@ void DropboxStorage::getAccessToken(Common::String code) { Networking::CurlJsonRequest *request = new Networking::CurlJsonRequest(callback, "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("client_id=" + Common::String(KEY)); + request->addPostField("client_secret=" + Common::String(SECRET)); request->addPostField("&redirect_uri=http%3A%2F%2Flocalhost%3A12345%2F"); ConnMan.addRequest(request); } diff --git a/backends/cloud/dropbox/dropboxstorage.h b/backends/cloud/dropbox/dropboxstorage.h index 19f2f9cdd4..c411e25d73 100644 --- a/backends/cloud/dropbox/dropboxstorage.h +++ b/backends/cloud/dropbox/dropboxstorage.h @@ -31,7 +31,9 @@ namespace Cloud { namespace Dropbox { class DropboxStorage: public Cloud::Storage { - static Common::String KEY, SECRET; + static char *KEY, *SECRET; + + static void loadKeyAndSecret(); Common::String _token, _uid; diff --git a/backends/cloud/onedrive/onedrivestorage.cpp b/backends/cloud/onedrive/onedrivestorage.cpp index e181fecabb..6f3a283fe6 100644 --- a/backends/cloud/onedrive/onedrivestorage.cpp +++ b/backends/cloud/onedrive/onedrivestorage.cpp @@ -37,8 +37,20 @@ namespace Cloud { namespace OneDrive { -Common::String OneDriveStorage::KEY; //can't use ConfMan there yet, loading it on instance creation/auth -Common::String OneDriveStorage::SECRET; //TODO: hide these secrets somehow +char *OneDriveStorage::KEY; //can't use ConfMan there yet, loading it on instance creation/auth +char *OneDriveStorage::SECRET; //TODO: hide these secrets somehow + +void OneDriveStorage::loadKeyAndSecret() { + Common::String k = ConfMan.get("ONEDRIVE_KEY", "cloud"); + KEY = new char[k.size() + 1]; + memcpy(KEY, k.c_str(), k.size()); + KEY[k.size()] = 0; + + k = ConfMan.get("ONEDRIVE_SECRET", "cloud"); + SECRET = new char[k.size() + 1]; + memcpy(SECRET, k.c_str(), k.size()); + SECRET[k.size()] = 0; +} OneDriveStorage::OneDriveStorage(Common::String accessToken, Common::String userId, Common::String refreshToken): _token(accessToken), _uid(userId), _refreshToken(refreshToken) {} @@ -67,8 +79,8 @@ void OneDriveStorage::getAccessToken(BoolCallback callback, Common::String code) request->addPostField("refresh_token=" + _refreshToken); request->addPostField("grant_type=refresh_token"); } - request->addPostField("client_id=" + KEY); - request->addPostField("client_secret=" + SECRET); + request->addPostField("client_id=" + Common::String(KEY)); + request->addPostField("client_secret=" + Common::String(SECRET)); request->addPostField("&redirect_uri=http%3A%2F%2Flocalhost%3A12345%2F"); ConnMan.addRequest(request); } @@ -186,8 +198,7 @@ Networking::Request *OneDriveStorage::syncSaves(BoolCallback callback) { } OneDriveStorage *OneDriveStorage::loadFromConfig(Common::String keyPrefix) { - KEY = ConfMan.get("ONEDRIVE_KEY", "cloud"); - SECRET = ConfMan.get("ONEDRIVE_SECRET", "cloud"); + loadKeyAndSecret(); if (!ConfMan.hasKey(keyPrefix + "access_token", "cloud")) { warning("No access_token found"); @@ -215,7 +226,7 @@ Common::String OneDriveStorage::getAuthLink() { url += "?response_type=code"; url += "&redirect_uri=http://localhost:12345/"; //that's for copy-pasting //url += "&redirect_uri=http%3A%2F%2Flocalhost%3A12345%2F"; //that's "http://localhost:12345/" for automatic opening - url += "&client_id=" + KEY; + url += "&client_id="; url += KEY; url += "&scope=onedrive.appfolder%20offline_access"; //TODO return url; } @@ -226,8 +237,7 @@ void OneDriveStorage::authThroughConsole() { return; } - KEY = ConfMan.get("ONEDRIVE_KEY", "cloud"); - SECRET = ConfMan.get("ONEDRIVE_SECRET", "cloud"); + loadKeyAndSecret(); if (ConfMan.hasKey("onedrive_code", "cloud")) { //phase 2: get access_token using specified code diff --git a/backends/cloud/onedrive/onedrivestorage.h b/backends/cloud/onedrive/onedrivestorage.h index 858af6c9bf..290abd7926 100644 --- a/backends/cloud/onedrive/onedrivestorage.h +++ b/backends/cloud/onedrive/onedrivestorage.h @@ -31,7 +31,9 @@ namespace Cloud { namespace OneDrive { class OneDriveStorage: public Cloud::Storage { - static Common::String KEY, SECRET; + static char *KEY, *SECRET; + + static void loadKeyAndSecret(); Common::String _token, _uid, _refreshToken; |