Skip to content
Permalink
Browse files

Common/HttpRequest: optionally follow redirects

  • Loading branch information...
Tilka committed Feb 1, 2019
1 parent a129d60 commit 3ff0e7dbd4071d24d30329e404bf690bb70015e5
Showing with 13 additions and 0 deletions.
  1. +12 −0 Source/Core/Common/HttpRequest.cpp
  2. +1 −0 Source/Core/Common/HttpRequest.h
@@ -30,6 +30,7 @@ class HttpRequest::Impl final
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);
@@ -33,6 +33,7 @@ class HttpRequest final

void SetCookies(const std::string& cookies);
void UseIPv4();
void FollowRedirects(long max = 1);
Response Get(const std::string& url, const Headers& headers = {});
Response Post(const std::string& url, const std::vector<u8>& payload,
const Headers& headers = {});

0 comments on commit 3ff0e7d

Please sign in to comment.
You can’t perform that action at this time.