r5sdk/r5dev/public/tier2/curlutils.h
Kawe Mazidjatari 9e9d3342b3 CURL tools improvement
- Added wrapper for downloading files.
- Moved many function arguments to dedicated parameters structure.
2023-07-28 14:47:20 +02:00

51 lines
1.3 KiB
C

#ifndef TIER2_CURLUTILS_H
#define TIER2_CURLUTILS_H
struct CURLProgress
{
CURLProgress()
: curl(nullptr)
, name(nullptr)
, cust(nullptr)
, size(0)
{}
CURL* curl;
const char* name;
void* cust; // custom pointer to anything.
size_t size;
};
struct CURLParams
{
CURLParams()
: writeFunction(nullptr)
, statusFunction(nullptr)
, timeout(0)
, verifyPeer(false)
, verbose(false)
{}
void* writeFunction;
void* statusFunction;
int timeout;
bool verifyPeer;
bool verbose;
};
size_t CURLWriteStringCallback(char* contents, const size_t size, const size_t nmemb, string* userp);
size_t CURLWriteFileCallback(void* data, const size_t size, const size_t nmemb, FILE* userp);
bool CURLDownloadFile(const char* remote, const char* savePath, const char* fileName,
const char* options, curl_off_t dataSize, void* customPointer, CURLParams& params);
CURL* CURLInitRequest(const char* remote, const char* request, string& outResponse, curl_slist*& slist, CURLParams& params);
CURLcode CURLSubmitRequest(CURL* curl, curl_slist*& slist);
CURLINFO CURLRetrieveInfo(CURL* curl);
bool CURLHandleError(CURL* curl, const CURLcode res, string& outMessage, const bool logError);
void CURLFormatUrl(string& outUrl, const char* host, const char* api);
#endif // !TIER2_CURLUTILS_H