mirror of
https://github.com/Karaka-Management/cOMS.git
synced 2026-01-18 06:08:41 +00:00
61 lines
1.4 KiB
C++
61 lines
1.4 KiB
C++
/**
|
|
* Karaka
|
|
*
|
|
* @package Utils
|
|
* @copyright Dennis Eichhorn
|
|
* @license OMS License 1.0
|
|
* @version 1.0.0
|
|
* @link https://karaka.app
|
|
*/
|
|
#ifndef UTILS_WEB_UTILS_H
|
|
#define UTILS_WEB_UTILS_H
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
#include <curl/curl.h>
|
|
|
|
#include "FileUtils.h"
|
|
|
|
namespace Utils {
|
|
namespace WebUtils {
|
|
static
|
|
int write_download_data (void *ptr, size_t size, size_t nmeb, void *stream)
|
|
{
|
|
Utils::FileUtils::file_body *out = (Utils::FileUtils::file_body *) stream;
|
|
int outSize = size * nmeb;
|
|
|
|
out->content = (char *) malloc(outSize + 1);
|
|
if (!out->content) {
|
|
fprintf(stderr, "CRITICAL: malloc failed");
|
|
}
|
|
|
|
if (out->content) {
|
|
memcpy(out->content, ptr, outSize);
|
|
|
|
out->size = outSize;
|
|
out->content[out->size] = 0;
|
|
}
|
|
|
|
return out->size;
|
|
}
|
|
|
|
static
|
|
Utils::FileUtils::file_body download (char *url)
|
|
{
|
|
file_body page = {0};
|
|
|
|
CURL *h = curl_easy_init();
|
|
curl_easy_setopt(h, CURLOPT_URL, url);
|
|
|
|
curl_easy_setopt(h, CURLOPT_WRITEFUNCTION, write_download_data);
|
|
curl_easy_setopt(h, CURLOPT_WRITEDATA, &page);
|
|
curl_easy_perform(h);
|
|
curl_easy_cleanup(h);
|
|
|
|
return page;
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif |