summaryrefslogtreecommitdiff
path: root/Source/Core/Common/HttpRequest.cpp
diff options
context:
space:
mode:
authorTillmann Karras <tilkax@gmail.com>2019-02-01 13:41:28 +0000
committerTillmann Karras <tilkax@gmail.com>2019-02-01 13:44:58 +0000
commit3ff0e7dbd4071d24d30329e404bf690bb70015e5 (patch)
treedca0c1ff1bd64892277974e0380df8f19f51504e /Source/Core/Common/HttpRequest.cpp
parenta129d60a570c73b614c02a3145bef42f2d329b64 (diff)
Common/HttpRequest: optionally follow redirects
Diffstat (limited to 'Source/Core/Common/HttpRequest.cpp')
-rw-r--r--Source/Core/Common/HttpRequest.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/Source/Core/Common/HttpRequest.cpp b/Source/Core/Common/HttpRequest.cpp
index 63e4e85878..cee9d7434c 100644
--- a/Source/Core/Common/HttpRequest.cpp
+++ b/Source/Core/Common/HttpRequest.cpp
@@ -30,6 +30,7 @@ public:
bool IsValid() const;
void SetCookies(const std::string& cookies);
void UseIPv4();
+ void FollowRedirects(long max);
Response Fetch(const std::string& url, Method method, const Headers& headers, const u8* payload,
size_t size);
@@ -68,6 +69,11 @@ void HttpRequest::UseIPv4()
m_impl->UseIPv4();
}
+void HttpRequest::FollowRedirects(long max)
+{
+ m_impl->FollowRedirects(max);
+}
+
HttpRequest::Response HttpRequest::Get(const std::string& url, const Headers& headers)
{
return m_impl->Fetch(url, Impl::Method::GET, headers, nullptr, 0);
@@ -147,6 +153,12 @@ void HttpRequest::Impl::UseIPv4()
curl_easy_setopt(m_curl.get(), CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
}
+void HttpRequest::Impl::FollowRedirects(long max)
+{
+ curl_easy_setopt(m_curl.get(), CURLOPT_FOLLOWLOCATION, 1);
+ curl_easy_setopt(m_curl.get(), CURLOPT_MAXREDIRS, max);
+}
+
static size_t CurlWriteCallback(char* data, size_t size, size_t nmemb, void* userdata)
{
auto* buffer = static_cast<std::vector<u8>*>(userdata);