void BoxStorage::getAccessToken(BoolCallback callback, Networking::ErrorCallback errorCallback, Common::String code) { if (!KEY || !SECRET) loadKeyAndSecret(); bool codeFlow = (code != ""); if (!codeFlow && _refreshToken == "") { warning("BoxStorage: no refresh token available to get new access token."); if (callback) (*callback)(BoolResponse(nullptr, false)); return; } Networking::JsonCallback innerCallback = new Common::CallbackBridge<BoxStorage, BoolResponse, Networking::JsonResponse>(this, &BoxStorage::tokenRefreshed, callback); if (errorCallback == nullptr) errorCallback = getErrorPrintingCallback(); Networking::CurlJsonRequest *request = new Networking::CurlJsonRequest(innerCallback, errorCallback, BOX_OAUTH2_TOKEN); if (codeFlow) { request->addPostField("grant_type=authorization_code"); request->addPostField("code=" + code); } else { request->addPostField("grant_type=refresh_token"); request->addPostField("refresh_token=" + _refreshToken); } request->addPostField("client_id=" + Common::String(KEY)); request->addPostField("client_secret=" + Common::String(SECRET)); /* if (Cloud::CloudManager::couldUseLocalServer()) { request->addPostField("&redirect_uri=http%3A%2F%2Flocalhost%3A12345"); } else { request->addPostField("&redirect_uri=https%3A%2F%2Fwww.scummvm.org/c/code"); } */ addRequest(request); }
void DropboxStorage::getAccessToken(Common::String code) { if (!KEY || !SECRET) loadKeyAndSecret(); Networking::JsonCallback callback = new Common::Callback<DropboxStorage, Networking::JsonResponse>(this, &DropboxStorage::codeFlowComplete); Networking::ErrorCallback errorCallback = new Common::Callback<DropboxStorage, Networking::ErrorResponse>(this, &DropboxStorage::codeFlowFailed); Networking::CurlJsonRequest *request = new Networking::CurlJsonRequest(callback, errorCallback, DROPBOX_OAUTH2_TOKEN); request->addPostField("code=" + code); request->addPostField("grant_type=authorization_code"); request->addPostField("client_id=" + Common::String(KEY)); request->addPostField("client_secret=" + Common::String(SECRET)); if (Cloud::CloudManager::couldUseLocalServer()) { request->addPostField("&redirect_uri=http%3A%2F%2Flocalhost%3A12345%2F"); } else { request->addPostField("&redirect_uri=https%3A%2F%2Fwww.scummvm.org/c/code"); } addRequest(request); }
BoxStorage *BoxStorage::loadFromConfig(Common::String keyPrefix) { loadKeyAndSecret(); if (!ConfMan.hasKey(keyPrefix + "access_token", ConfMan.kCloudDomain)) { warning("BoxStorage: no access_token found"); return nullptr; } if (!ConfMan.hasKey(keyPrefix + "refresh_token", ConfMan.kCloudDomain)) { warning("BoxStorage: no refresh_token found"); return nullptr; } Common::String accessToken = ConfMan.get(keyPrefix + "access_token", ConfMan.kCloudDomain); Common::String refreshToken = ConfMan.get(keyPrefix + "refresh_token", ConfMan.kCloudDomain); return new BoxStorage(accessToken, refreshToken); }
DropboxStorage *DropboxStorage::loadFromConfig(Common::String keyPrefix) { loadKeyAndSecret(); if (!ConfMan.hasKey(keyPrefix + "access_token", ConfMan.kCloudDomain)) { warning("DropboxStorage: no access_token found"); return nullptr; } if (!ConfMan.hasKey(keyPrefix + "user_id", ConfMan.kCloudDomain)) { warning("DropboxStorage: no user_id found"); return nullptr; } Common::String accessToken = ConfMan.get(keyPrefix + "access_token", ConfMan.kCloudDomain); Common::String userId = ConfMan.get(keyPrefix + "user_id", ConfMan.kCloudDomain); return new DropboxStorage(accessToken, userId); }