1 #ifndef YATBCPP_TELEGRAM_METHODMULTIPART_H 2 #define YATBCPP_TELEGRAM_METHODMULTIPART_H 5 #include <jsoncpp/json/json.h> 6 #include "../exceptions/telegram_api_error.h" 7 #include "../exceptions/curl_error.h" 8 #include "../types/telegram_type.h" 9 #include "../exceptions/essential_key_missing.h" 10 #include "../bot/Token.h" 22 static size_t WriteCallback(
void *contents,
size_t size,
size_t nmemb,
void *stringptr){
24 ((
string*)stringptr)->append((
char*)contents, size * nmemb);
36 struct curl_slist * curl_header_list =NULL;
37 curl_header_list = curl_slist_append( curl_header_list ,
"Content-Type: multipart/form-data" );
39 struct curl_httppost *uploadPost=NULL;
40 struct curl_httppost *endptr=NULL;
44 CURL* curl = curl_easy_init();
46 curl_easy_setopt(curl,CURLOPT_URL,api_url.c_str());
47 curl_easy_setopt(curl,CURLOPT_HTTPHEADER,curl_header_list);
48 curl_easy_setopt(curl,CURLOPT_HTTPPOST,uploadPost);
50 curl_easy_setopt(curl,CURLOPT_WRITEDATA,&readBuffer);
52 CURLcode res = curl_easy_perform(curl);
53 reader.parse(readBuffer,Response);
57 if(Response[
"ok"].asBool()){
58 curl_slist_free_all(curl_header_list);
59 curl_easy_cleanup(curl);
60 curl_formfree(uploadPost);
61 return yatbcpp::fromJson<RETURNTYPE>(Response[
"result"]);
64 curl_formfree(uploadPost);
65 curl_easy_cleanup(curl);
66 curl_slist_free_all(curl_header_list);
67 throw telegram_api_error(Response[
"error_code"].asInt(),Response[
"description"].asString());
77 virtual void add_to_post(
struct curl_httppost **start,
struct curl_httppost **end){}
94 #endif //YATBCPP_TELEGRAM_METHODMULTIPART_H
static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *stringptr)
static RETURNTYPE perform_requestMultipart(Token T, telegram_methodMultipart< RETURNTYPE > &method_body)
telegram_methodMultipart(std::string functionname)
virtual void add_to_post(struct curl_httppost **start, struct curl_httppost **end)
const std::string & getFunctionname() const
const std::string getToken() const