#include #include "network.hpp" size_t writeCallback( void *contents, size_t size, size_t nmemb, void *target ) { *static_cast(target) += std::string(static_cast(contents), size*nmemb); return size * nmemb; } Curl::Curl() { curl_global_init(CURL_GLOBAL_ALL); curl_handle = curl_easy_init(); curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, writeCallback); curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "libcurl-agent/1.0"); } Curl::~Curl() { curl_easy_cleanup(curl_handle); curl_global_cleanup(); } std::string Curl::execute(const std::string &url) { std::string source; source.reserve(100000); curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, static_cast(&source)); curl_easy_setopt(curl_handle, CURLOPT_URL, url.c_str()); auto res = curl_easy_perform(curl_handle); if(res != CURLE_OK) { std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl; return ""; } return source; }