Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: src/DefaultWebRequestCurl.cpp

Issue 10252013: Implemented curl support for web requests (Closed)
Patch Set: Addressed review comments Created April 12, 2013, 1:37 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/DefaultWebRequestCurl.cpp
===================================================================
rename from src/WebRequest.cpp
rename to src/DefaultWebRequestCurl.cpp
--- a/src/WebRequest.cpp
+++ b/src/DefaultWebRequestCurl.cpp
@@ -1,20 +1,13 @@
-#include <AdblockPlus/WebRequest.h>
-
-AdblockPlus::WebRequest::~WebRequest()
-{
-}
-
-#if defined(HAVE_CURL)
-
#include <sstream>
#include <cctype>
#include <algorithm>
#include <curl/curl.h>
+#include <AdblockPlus/WebRequest.h>
namespace
{
struct HeaderData
{
int status;
bool expectingStatus;
std::vector<std::string> headers;
@@ -26,43 +19,43 @@ namespace
}
};
unsigned int ConvertErrorCode(CURLcode code)
{
switch (code)
{
case CURLE_OK:
- return NS_OK;
+ return AdblockPlus::WebRequest::NS_OK;
case CURLE_FAILED_INIT:
- return NS_ERROR_NOT_INITIALIZED;
+ return AdblockPlus::WebRequest::NS_ERROR_NOT_INITIALIZED;
case CURLE_UNSUPPORTED_PROTOCOL:
- return NS_ERROR_UNKNOWN_PROTOCOL;
+ return AdblockPlus::WebRequest::NS_ERROR_UNKNOWN_PROTOCOL;
case CURLE_URL_MALFORMAT:
- return NS_ERROR_MALFORMED_URI;
+ return AdblockPlus::WebRequest::NS_ERROR_MALFORMED_URI;
case CURLE_COULDNT_RESOLVE_PROXY:
- return NS_ERROR_UNKNOWN_PROXY_HOST;
+ return AdblockPlus::WebRequest::NS_ERROR_UNKNOWN_PROXY_HOST;
case CURLE_COULDNT_RESOLVE_HOST:
- return NS_ERROR_UNKNOWN_HOST;
+ return AdblockPlus::WebRequest::NS_ERROR_UNKNOWN_HOST;
case CURLE_COULDNT_CONNECT:
- return NS_ERROR_CONNECTION_REFUSED;
+ return AdblockPlus::WebRequest::NS_ERROR_CONNECTION_REFUSED;
case CURLE_OUT_OF_MEMORY:
- return NS_ERROR_OUT_OF_MEMORY;
+ return AdblockPlus::WebRequest::NS_ERROR_OUT_OF_MEMORY;
case CURLE_OPERATION_TIMEDOUT:
- return NS_ERROR_NET_TIMEOUT;
+ return AdblockPlus::WebRequest::NS_ERROR_NET_TIMEOUT;
case CURLE_TOO_MANY_REDIRECTS:
- return NS_ERROR_REDIRECT_LOOP;
+ return AdblockPlus::WebRequest::NS_ERROR_REDIRECT_LOOP;
case CURLE_GOT_NOTHING:
- return NS_ERROR_NO_CONTENT;
+ return AdblockPlus::WebRequest::NS_ERROR_NO_CONTENT;
case CURLE_SEND_ERROR:
- return NS_ERROR_NET_RESET;
+ return AdblockPlus::WebRequest::NS_ERROR_NET_RESET;
case CURLE_RECV_ERROR:
- return NS_ERROR_NET_RESET;
+ return AdblockPlus::WebRequest::NS_ERROR_NET_RESET;
default:
- return NS_CUSTOM_ERROR_BASE + code;
+ return AdblockPlus::WebRequest::NS_CUSTOM_ERROR_BASE + code;
}
}
size_t ReceiveData(char* ptr, size_t size, size_t nmemb, void* userdata)
{
std::stringstream* stream = static_cast<std::stringstream*>(userdata);
stream->write(ptr, size * nmemb);
return nmemb;
@@ -130,17 +123,17 @@ AdblockPlus::ServerResponse AdblockPlus:
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &responseText);
curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, ReceiveHeader);
curl_easy_setopt(curl, CURLOPT_HEADERDATA, &headerData);
struct curl_slist* headerList = 0;
for (HeaderList::const_iterator it = requestHeaders.begin();
it != requestHeaders.end(); ++it)
{
- curl_slist_append(headerList, (it->first + ": " + it->second).c_str());
+ headerList = curl_slist_append(headerList, (it->first + ": " + it->second).c_str());
}
if (headerList)
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerList);
result.status = ConvertErrorCode(curl_easy_perform(curl));
result.responseStatus = headerData.status;
result.responseText = responseText.str();
for (std::vector<std::string>::iterator it = headerData.headers.begin();
@@ -173,18 +166,8 @@ AdblockPlus::ServerResponse AdblockPlus:
}
if (headerList)
curl_slist_free_all(headerList);
curl_easy_cleanup(curl);
}
return result;
}
-#else
-AdblockPlus::ServerResponse AdblockPlus::DefaultWebRequest::GET(
- const std::string& url, const HeaderList& requestHeaders) const
-{
- AdblockPlus::ServerResponse result;
- result.status = NS_ERROR_FAILURE;
- result.responseStatus = 0;
- return result;
-}
-#endif

Powered by Google App Engine
This is Rietveld