/[projects]/smsdaemon/HttpClient.cpp
ViewVC logotype

Annotation of /smsdaemon/HttpClient.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 196 - (hide annotations) (download)
Thu Dec 18 06:53:29 2008 UTC (15 years, 5 months ago) by torben
File size: 1470 byte(s)
Make pretty

astyle -t -b -N

1 torben 193 #include "HttpClient.h"
2     #include "Exceptions.h"
3    
4     #include <iomanip>
5     #include <sstream>
6     #include <curl/curl.h>
7    
8     namespace HttpClient
9     {
10    
11     std::string UrlEncode(std::string url)
12     {
13     std::ostringstream ss;
14 torben 196 for (unsigned i=0; i<url.size(); i++)
15     {
16 torben 193 char ch = url.at(i);
17     if (isalnum(ch))
18     ss << ch;
19     else
20 torben 195 ss << "%" << std::setw(2) << std::hex << std::setfill('0') <<(int) ch;
21 torben 193 }
22     return ss.str();
23     }
24    
25    
26     size_t writefunction( void *ptr, size_t size, size_t nmemb, void *stream)
27     {
28     int total = size * nmemb;
29    
30     char* bytes = reinterpret_cast<char*>(ptr);
31     std::vector<char>* vec = reinterpret_cast< std::vector<char>* >(stream);
32    
33     int i;
34 torben 196 for (i=0; i<total; i++)
35     {
36     vec->push_back( bytes[i] );
37     }
38 torben 193 return i;
39     }
40    
41     std::vector<char> Get(std::string url)
42     {
43     std::vector<char> buf;
44     char errmsg[128] = "";
45    
46     CURL* curl = curl_easy_init();
47     if (curl == 0)
48     throw httpexception("could not init CURL");
49    
50     curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errmsg);
51    
52 torben 196 curl_easy_setopt(curl, CURLOPT_URL, url.c_str() );
53     curl_easy_setopt(curl, CURLOPT_FAILONERROR,1);
54     curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writefunction);
55 torben 193 curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buf);
56    
57 torben 196 int res = curl_easy_perform(curl);
58     curl_easy_cleanup(curl);
59 torben 193
60     if (res != 0)
61     throw httpexception(errmsg);
62    
63    
64    
65     return buf;
66     }
67    
68     std::string GetString(std::string url)
69     {
70     std::vector<char> buf = Get(url);
71     buf.push_back(0);
72     return std::string(&buf[0]);
73     }
74     }

  ViewVC Help
Powered by ViewVC 1.1.20