summaryrefslogtreecommitdiffabout
path: root/lib/curl.cc
Unidiff
Diffstat (limited to 'lib/curl.cc') (more/less context) (show whitespace changes)
-rw-r--r--lib/curl.cc20
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/curl.cc b/lib/curl.cc
index 6172828..734e2ca 100644
--- a/lib/curl.cc
+++ b/lib/curl.cc
@@ -1,56 +1,76 @@
1#include <opkele/exception.h>
1#include <opkele/curl.h> 2#include <opkele/curl.h>
2 3
3#include "config.h" 4#include "config.h"
4 5
5namespace opkele { 6namespace opkele {
6 7
7 namespace util { 8 namespace util {
8 9
10 curl_slist_t::~curl_slist_t() throw() {
11 if(_s)
12 curl_slist_free_all(_s);
13 }
14
15 curl_slist_t& curl_slist_t::operator=(curl_slist *s) {
16 if(_s)
17 curl_slist_free_all(_s);
18 _s = s;
19 return *this;
20 }
21
22 void curl_slist_t::append(const char *str) {
23 curl_slist *s = curl_slist_append(_s,str);
24 if(!s)
25 throw opkele::exception(OPKELE_CP_ "failed to curl_slist_append()");
26 _s=s;
27 }
28
9 curl_t::~curl_t() throw() { 29 curl_t::~curl_t() throw() {
10 if(_c) 30 if(_c)
11 curl_easy_cleanup(_c); 31 curl_easy_cleanup(_c);
12 } 32 }
13 33
14 curl_t& curl_t::operator=(CURL *c) { 34 curl_t& curl_t::operator=(CURL *c) {
15 if(_c) 35 if(_c)
16 curl_easy_cleanup(_c); 36 curl_easy_cleanup(_c);
17 _c = c; 37 _c = c;
18 return *this; 38 return *this;
19 } 39 }
20 40
21 CURLcode curl_t::misc_sets() { 41 CURLcode curl_t::misc_sets() {
22 assert(_c); 42 assert(_c);
23 CURLcode r; 43 CURLcode r;
24 (r=easy_setopt(CURLOPT_FOLLOWLOCATION,1)) 44 (r=easy_setopt(CURLOPT_FOLLOWLOCATION,1))
25 || (r=easy_setopt(CURLOPT_MAXREDIRS,5)) 45 || (r=easy_setopt(CURLOPT_MAXREDIRS,5))
26 || (r=easy_setopt(CURLOPT_DNS_CACHE_TIMEOUT,120)) 46 || (r=easy_setopt(CURLOPT_DNS_CACHE_TIMEOUT,120))
27 || (r=easy_setopt(CURLOPT_DNS_USE_GLOBAL_CACHE,1)) 47 || (r=easy_setopt(CURLOPT_DNS_USE_GLOBAL_CACHE,1))
28 || (r=easy_setopt(CURLOPT_USERAGENT,PACKAGE_NAME"/"PACKAGE_SRC_VERSION)) 48 || (r=easy_setopt(CURLOPT_USERAGENT,PACKAGE_NAME"/"PACKAGE_SRC_VERSION))
29 || (r=easy_setopt(CURLOPT_TIMEOUT,20)) 49 || (r=easy_setopt(CURLOPT_TIMEOUT,20))
30 #ifdefDISABLE_CURL_SSL_VERIFYHOST 50 #ifdefDISABLE_CURL_SSL_VERIFYHOST
31 || (r=easy_setopt(CURLOPT_SSL_VERIFYHOST,0)) 51 || (r=easy_setopt(CURLOPT_SSL_VERIFYHOST,0))
32#endif 52#endif
33 #ifdefDISABLE_CURL_SSL_VERIFYPEER 53 #ifdefDISABLE_CURL_SSL_VERIFYPEER
34 || (r=easy_setopt(CURLOPT_SSL_VERIFYPEER,0)) 54 || (r=easy_setopt(CURLOPT_SSL_VERIFYPEER,0))
35#endif 55#endif
36 ; 56 ;
37 return r; 57 return r;
38 } 58 }
39 59
40 static size_t _write(void *p,size_t s,size_t nm,void *stream) { 60 static size_t _write(void *p,size_t s,size_t nm,void *stream) {
41 return ((curl_t*)stream)->write(p,s,nm); 61 return ((curl_t*)stream)->write(p,s,nm);
42 } 62 }
43 63
44 CURLcode curl_t::set_write() { 64 CURLcode curl_t::set_write() {
45 assert(_c); 65 assert(_c);
46 CURLcode r; 66 CURLcode r;
47 (r = easy_setopt(CURLOPT_WRITEDATA,this)) 67 (r = easy_setopt(CURLOPT_WRITEDATA,this))
48 || (r = easy_setopt(CURLOPT_WRITEFUNCTION,_write)); 68 || (r = easy_setopt(CURLOPT_WRITEFUNCTION,_write));
49 return r; 69 return r;
50 } 70 }
51 71
52 static int _progress(void *cp,double dlt,double dln,double ult,double uln) { 72 static int _progress(void *cp,double dlt,double dln,double ult,double uln) {
53 return ((curl_t*)cp)->progress(dlt,dln,ult,uln); 73 return ((curl_t*)cp)->progress(dlt,dln,ult,uln);
54 } 74 }
55 75
56 CURLcode curl_t::set_progress() { 76 CURLcode curl_t::set_progress() {