Beispiel #1
0
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);
}
Beispiel #2
0
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);
}
Beispiel #3
0
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);
}
Beispiel #4
0
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);
}