#include #include #include #include "CurlResult.h" void CurlResult_init(struct CurlResult* this) { Buffer_init(&this->buffer); } void CurlResult_destroyMembers(struct CurlResult* this) { Buffer_destroyMembers(&this->buffer); } size_t CurlResult_write(void* buffer, size_t charSize, size_t bufferSize, void* userdata) { if (!userdata) { return 0; } struct CurlResult* this = userdata; return Buffer_append(&this->buffer, buffer, (bufferSize*charSize)); } json_value* CurlResult_parse(struct CurlResult* this) { /* FILE* f = fopen("jsonbuffer", "w"); */ /* fwrite(this->buffer.buffer, sizeof(char), this->buffer.bufferUsed, f); */ /* fclose(f); */ char error[512] = { 0 }; json_settings settings = { 0 }; json_value* ret = json_parse_ex(&settings, this->buffer.buffer, this->buffer.bufferUsed, error); /* if (error[0] != 0) { */ /* printf("failed parsing json:\n %s\n", error); */ /* exit(4); */ /* } */ return ret; } CURL* Curl_defaultHandle(const char* url, struct CurlResult* userdata) { CURL* handle = curl_easy_init(); CurlResult_init(userdata); curl_easy_setopt(handle, CURLOPT_URL, url); curl_easy_setopt(handle, CURLOPT_TIMEOUT, 15); curl_easy_setopt(handle, CURLOPT_NOSIGNAL, 1); curl_easy_setopt(handle, CURLOPT_WRITEDATA, userdata); curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, CurlResult_write); return handle; } DEFAULT_CREATE_DESTROY(CurlResult)