/* This file is part of the download library. This library is used to download files from a server. Functions: - download_file_from_srv: Downloads a file from a server and saves it to a file. */ #pragma warning(disable:4996) #ifndef CONNECT_CPP #define CONNECT_CPP #include "download.h" size_t write_callback(void* contents, size_t size, size_t nmemb, void* userp) { size_t totalSize = size * nmemb; FILE* file = (FILE*)userp; if (file) { fwrite(contents, 1, totalSize, file); } return totalSize; } int download_file_from_srv(const char* url, const char* outputFileName) { //use curl to download a file from a server CURL* curl; CURLcode res; FILE* output_file; curl = curl_easy_init(); if (!curl) { return 7; } // Set the URL to download curl_easy_setopt(curl, CURLOPT_URL, url); // Create a file to write the downloaded data output_file = fopen(outputFileName, "wb"); if (!output_file) { curl_easy_cleanup(curl); return 7; } curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); // Set the write callback function curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, output_file); // Perform the download res = curl_easy_perform(curl); if (res != CURLE_OK) { return 7; } // Cleanup and close the file curl_easy_cleanup(curl); fclose(output_file); return 0; } #endif