vector<FileSharing::GameInfo> FileSharing::listGames() { if(CURL* curl = curl_easy_init()) { curl_easy_setopt(curl, CURLOPT_URL, escapeUrl(uploadUrl + "/get_games.php").c_str()); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, dataFun); curl_easy_setopt(curl, CURLOPT_TIMEOUT, 5); string ret; curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ret); curl_easy_perform(curl); curl_easy_cleanup(curl); return parseGames(ret); } return {}; }
optional<vector<FileSharing::GameInfo>> FileSharing::listGames() { if (!options.getBoolValue(OptionId::ONLINE)) return {}; if (CURL* curl = curl_easy_init()) { curl_easy_setopt(curl, CURLOPT_URL, escapeUrl(uploadUrl + "/get_games2.php").c_str()); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, dataFun); curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10); // Internal CURL progressmeter must be disabled if we provide our own callback curl_easy_setopt(curl, CURLOPT_NOPROGRESS, false); // Install the callback function curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, progressFunction); string ret; curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ret); CURLcode res = curl_easy_perform(curl); curl_easy_cleanup(curl); if (res != CURLE_OK) return none; return parseGames(ret); } return none; }