void SQLQuery:: prepareQuery() { createQueryString(type, query_predicates); }
bool Curl::doPost(const string& url, const rcp::Collection& params, bool multiPart) { CURLcode r; struct curl_slist* curl_header = NULL; struct curl_httppost* post_curr = NULL; struct curl_httppost* post_last = NULL; string use_url = url; // @todo make url not const!s // Make sure userpass/callback is set. reset(); // Remove the Expect: from header, can give problems... (when you get a 417 error) static const char buf[] = "Expect:"; curl_header = curl_slist_append(curl_header,buf); // Add fields to post. // ------------------------------------------------------ if(!multiPart) { const list<rcp::Parameter*>& pars = params.getParameters(); string data_str = createQueryString(pars); r = curl_easy_setopt(curl, CURLOPT_HTTPPOST, 1); CHECK_CURL_ERROR(r); r = curl_easy_setopt(curl, CURLOPT_COPYPOSTFIELDS, data_str.c_str()); CHECK_CURL_ERROR(r); } else { // handling a multi part post. const list<rcp::Parameter*>& post_params = params.getParameters(); list<rcp::Parameter*>::const_iterator it = post_params.begin(); while(it != post_params.end()) { switch((*it)->type) { case rcp::Parameter::PARAM_STRING: { curl_formadd( &post_curr ,&post_last ,CURLFORM_COPYNAME ,(*it)->getName().c_str() ,CURLFORM_COPYCONTENTS ,(*it)->getStringValue().c_str() ,CURLFORM_END ); break; } case rcp::Parameter::PARAM_FILE: { curl_formadd( &post_curr ,&post_last ,CURLFORM_COPYNAME ,(*it)->getName().c_str() ,CURLFORM_FILE ,(*it)->getStringValue().c_str() ,CURLFORM_END ); break; } default: { printf("error type not handled: %d\n", (*it)->type); break; } } ++it; } r = curl_easy_setopt(curl, CURLOPT_HTTPPOST, post_curr); // only for multi-part CHECK_CURL_ERROR(r); } // no CA verification r = curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false); CHECK_CURL_ERROR(r); // set URL r = curl_easy_setopt(curl, CURLOPT_URL, use_url.c_str()); CHECK_CURL_ERROR(r); // set header if(headers.size()) { setHeaders(&curl_header); } if(curl_header) { curl_easy_setopt(curl, CURLOPT_HTTPHEADER, curl_header); } // perform request. bool result = true; r = curl_easy_perform(curl); if(r != CURLE_OK) { result = false; } curl_formfree(post_curr); // clear header. curl_slist_free_all(curl_header); headers.clear(); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, NULL); // opts are sticky return result; }