示例#1
0
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 {};
}
示例#2
0
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;
}