Created
April 3, 2010 11:23
-
-
Save atr000/354397 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <sstream> | |
#include <curl/curl.h> | |
#define END_POINT "http://twitpic.com/api/upload" | |
#define EXPECT_ARGS 4 | |
size_t write_data(void *buffer, size_t size, size_t nmemb, void* userp) | |
{ | |
std::stringstream strmResponse; | |
size_t nReal = size * nmemb; | |
strmResponse << std::string((char*)buffer, size*nmemb); | |
std::string sLine(""); | |
while (getline(strmResponse, sLine)) { | |
std::cout << sLine.c_str() << std::endl; | |
} | |
return nReal; | |
} | |
int main (int argc, char * const argv[]) { | |
int result = 0; | |
CURL* hCurl = NULL; | |
CURLcode hResult; | |
std::string sUser(""); | |
std::string sPass(""); | |
std::string sFileName(""); | |
//Curl for form data | |
struct curl_httppost *post = NULL; | |
struct curl_httppost *last = NULL; | |
try{ | |
if(argc < EXPECT_ARGS) { | |
std::cout << "Usage twitpic_upload twitterUserName twiiterPassword fileName" << std::endl; | |
throw false; | |
} | |
//Get the require params from command line args | |
sUser = argv[1]; | |
sPass = argv[2]; | |
sFileName = argv[3]; | |
//Initialize curl, just don't let easy_init to do it for you | |
curl_global_init(CURL_GLOBAL_ALL); | |
//Handle to the curl | |
hCurl = curl_easy_init(); | |
if(NULL == hCurl) { | |
throw false; | |
} | |
//Construct the form | |
curl_formadd(&post, &last, CURLFORM_COPYNAME, "username", CURLFORM_COPYCONTENTS, sUser.c_str(), CURLFORM_END); | |
curl_formadd(&post, &last, CURLFORM_COPYNAME, "password", CURLFORM_COPYCONTENTS, sPass.c_str(), CURLFORM_END); | |
curl_formadd(&post, &last, CURLFORM_COPYNAME, "media", CURLFORM_FILE, sFileName.c_str(), CURLFORM_END); | |
//Specify the API Endpoint | |
hResult = curl_easy_setopt(hCurl,CURLOPT_URL, END_POINT); | |
//Specify the HTTP Method | |
hResult = curl_easy_setopt(hCurl, CURLOPT_HTTPPOST, post); | |
//Post Away !!! | |
hResult = curl_easy_perform(hCurl); | |
if(hResult != CURLE_OK){ | |
std::cout << "Cannot find the twitpic site " << std::endl; | |
throw false; | |
} | |
} | |
catch (...) { | |
result = -1; | |
} | |
curl_formfree(post); | |
curl_easy_cleanup(hCurl); | |
curl_global_cleanup(); | |
return result; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment