| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #include "PolycodeDownloader.h"
- size_t DownloaderCallback(char *ptr, size_t size, size_t nmemb, void *userdata) {
- PolycodeDownloader *downloader = (PolycodeDownloader*) userdata;
-
- size_t newSize = downloader->size + (size*nmemb);
- downloader->data = (char*)realloc((void*)downloader->data, newSize);
-
- memcpy(downloader->data+downloader->size, ptr, (size*nmemb));
-
- downloader->size = newSize;
- return size * nmemb;
- }
- String PolycodeDownloader::getDataAsString() {
- char *ndata = (char*)malloc(size);
- memcpy(ndata, data, size);
- ndata[size-1] = '\0';
- String ret = String(ndata);
- free(ndata);
- return ret;
- }
-
- PolycodeDownloader::PolycodeDownloader(String url) {
-
- data = (char*)malloc(0);
- size = 0;
-
- curl = curl_easy_init();
-
- curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, DownloaderCallback);
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, this);
-
- CURLcode curl_res = curl_easy_perform(curl);
-
- curl_easy_cleanup(curl);
-
- dispatchEvent(new Event(Event::COMPLETE_EVENT), Event::COMPLETE_EVENT);
- }
- PolycodeDownloader::~PolycodeDownloader() {
- free(data);
- }
|