#pragma once #include "MString.h" #include #include using michlib::MString; class CURLRAIIDT { public: // TODO: make static void operator()(CURL* c) { curl_easy_cleanup(c); } }; class CURLRAII: public std::unique_ptr { char err[CURL_ERROR_SIZE]; public: CURLRAII() { reset(curl_easy_init()); curl_easy_setopt(*this, CURLOPT_ERRORBUFFER, err); } operator CURL*() const { return get(); } const char* Err() const { return err; } }; // Curl writeback function, write to MString size_t Write2String(char* ptr, size_t size, size_t n, void* data); // Curl writeback function, write to file descriptor size_t Write2File(char* ptr, size_t size, size_t n, void* data); // Get content of url to MString std::pair GetUrl(const CURLRAII& chandle, const MString& url);