Esempio n. 1
0
bool GUIEngine::downloadFile(std::string url, std::string target)
{
#if USE_CURL
	std::ofstream target_file(target.c_str(), std::ios::out | std::ios::binary);

	if (!target_file.good()) {
		return false;
	}

	HTTPFetchRequest fetch_request;
	HTTPFetchResult fetch_result;
	fetch_request.url = url;
	fetch_request.caller = HTTPFETCH_SYNC;
	fetch_request.timeout = g_settings->getS32("curl_file_download_timeout");
	httpfetch_sync(fetch_request, fetch_result);

	if (!fetch_result.succeeded) {
		return false;
	}
	target_file << fetch_result.data;

	return true;
#else
	return false;
#endif
}
Esempio n. 2
0
bool GUIEngine::downloadFile(std::string url,std::string target) {
#if USE_CURL
	bool retval = true;

	FILE* targetfile = fopen(target.c_str(),"wb");

	if (targetfile) {
		HTTPFetchRequest fetchrequest;
		HTTPFetchResult fetchresult;
		fetchrequest.url = url;
		fetchrequest.caller = HTTPFETCH_SYNC;
		httpfetch_sync(fetchrequest,fetchresult);

		if (fetchresult.succeeded) {
			if (fwrite(fetchresult.data.c_str(),1,fetchresult.data.size(),targetfile) != fetchresult.data.size()) {
				retval = false;
			}
		}
		else {
			retval = false;
		}
		fclose(targetfile);
	}
	else {
		retval = false;
	}

	return retval;
#else
	return false;
#endif
}
Esempio n. 3
0
Json::Value fetchJsonValue(const std::string &url,
		std::vector<std::string> *extra_headers)
{
	HTTPFetchRequest fetch_request;
	HTTPFetchResult fetch_result;
	fetch_request.url = url;
	fetch_request.caller = HTTPFETCH_SYNC;

	if (extra_headers != NULL)
		fetch_request.extra_headers = *extra_headers;

	httpfetch_sync(fetch_request, fetch_result);

	if (!fetch_result.succeeded) {
		return Json::Value();
	}
	Json::Value root;
	Json::Reader reader;
	std::istringstream stream(fetch_result.data);

	if (!reader.parse(stream, root)) {
		errorstream << "URL: " << url << std::endl;
		errorstream << "Failed to parse json data " << reader.getFormattedErrorMessages();
		if (fetch_result.data.size() > 100) {
			errorstream << "Data (" << fetch_result.data.size()
				<< " bytes) printed to warningstream." << std::endl;
			warningstream << "data: \"" << fetch_result.data << "\"" << std::endl;
		} else {
			errorstream << "data: \"" << fetch_result.data << "\"" << std::endl;
		}
		return Json::Value();
	}

	return root;
}
Esempio n. 4
0
bool GUIEngine::downloadFile(std::string url,std::string target) {
#if USE_CURL
	std::ofstream targetfile(target.c_str(), std::ios::out | std::ios::binary);

	if (!targetfile.good()) {
		return false;
	}

	HTTPFetchRequest fetchrequest;
	HTTPFetchResult fetchresult;
	fetchrequest.url = url;
	fetchrequest.caller = HTTPFETCH_SYNC;
	httpfetch_sync(fetchrequest, fetchresult);

	if (fetchresult.succeeded) {
		targetfile << fetchresult.data;
	} else {
		return false;
	}

	return true;
#else
	return false;
#endif
}