summaryrefslogtreecommitdiffabout
path: root/lib/consumer.cc
authorMichael Krelin <hacker@klever.net>2007-08-09 00:01:12 (UTC)
committer Michael Krelin <hacker@klever.net>2007-08-09 00:01:12 (UTC)
commit94e566c912f97b4c9e47353e10e86649ee8060a4 (patch) (unidiff)
treea11910bf677723a7eabccad161ec0b85426293ff /lib/consumer.cc
parent4696aae9da3500f600cedd482501a89d41fd27ec (diff)
downloadlibopkele-94e566c912f97b4c9e47353e10e86649ee8060a4.zip
libopkele-94e566c912f97b4c9e47353e10e86649ee8060a4.tar.gz
libopkele-94e566c912f97b4c9e47353e10e86649ee8060a4.tar.bz2
make canonicalize follow redirects
- renamed old consumer_t::canonicalize to consumer_t::normalize - made the real canonicalize virtual to allow caching layer
Diffstat (limited to 'lib/consumer.cc') (more/less context) (ignore whitespace changes)
-rw-r--r--lib/consumer.cc26
1 files changed, 25 insertions, 1 deletions
diff --git a/lib/consumer.cc b/lib/consumer.cc
index 282f0cc..dd8e150 100644
--- a/lib/consumer.cc
+++ b/lib/consumer.cc
@@ -312,3 +312,3 @@ namespace opkele {
312 312
313 string consumer_t::canonicalize(const string& url) { 313 string consumer_t::normalize(const string& url) {
314 string rv = url; 314 string rv = url;
@@ -344,2 +344,26 @@ namespace opkele {
344 344
345 string consumer_t::canonicalize(const string& url) {
346 string rv = normalize(url);
347 curl_t curl = curl_easy_init();
348 if(!curl)
349 throw exception_curl(OPKELE_CP_ "failed to curl_easy_init()");
350 string html;
351 CURLcode r;
352 (r=curl_misc_sets(curl))
353 || (r=curl_easy_setopt(curl,CURLOPT_URL,rv.c_str()))
354 || (r=curl_easy_setopt(curl,CURLOPT_NOBODY,1))
355 ;
356 if(r)
357 throw exception_curl(OPKELE_CP_ "failed to curl_easy_setopt()",r);
358 r = curl_easy_perform(curl);
359 if(r)
360 throw exception_curl(OPKELE_CP_ "failed to curl_easy_perform()",r);
361 const char *eu = 0;
362 r = curl_easy_getinfo(curl,CURLINFO_EFFECTIVE_URL,&eu);
363 if(r)
364 throw exception_curl(OPKELE_CP_ "failed to curl_easy_getinfo(..CURLINFO_EFFECTIVE_URL..)",r);
365 rv = eu;
366 return normalize(rv);
367 }
368
345} 369}