diff --git a/include/Nazara/Network/Enums.hpp b/include/Nazara/Network/Enums.hpp index 39e022c33..8d2e06dc5 100644 --- a/include/Nazara/Network/Enums.hpp +++ b/include/Nazara/Network/Enums.hpp @@ -119,6 +119,22 @@ namespace Nz }; constexpr std::size_t SocketTypeCount = static_cast(SocketType::Max) + 1; + + enum class WebRequestOption + { + FailOnError, + FollowRedirects, + + Max = FollowRedirects + }; + + template<> + struct EnumAsFlags + { + static constexpr WebRequestOption max = WebRequestOption::Max; + }; + + using WebRequestOptionFlags = Flags; } #endif // NAZARA_NETWORK_ENUMS_HPP diff --git a/include/Nazara/Network/WebRequest.hpp b/include/Nazara/Network/WebRequest.hpp index d83e8e742..883629b9e 100644 --- a/include/Nazara/Network/WebRequest.hpp +++ b/include/Nazara/Network/WebRequest.hpp @@ -46,6 +46,7 @@ namespace Nz inline void SetHeader(std::string header, std::string value); void SetJSonContent(std::string encodedJSon); void SetMaximumFileSize(UInt64 maxFileSize); + inline void SetOptions(WebRequestOptionFlags options); inline void SetResultCallback(ResultCallback callback); void SetServiceName(std::string serviceName); void SetURL(const std::string& url); @@ -87,6 +88,7 @@ namespace Nz MovablePtr m_fetchHandle; #endif ResultCallback m_resultCallback; + WebRequestOptionFlags m_options; bool m_isUserAgentSet; }; } diff --git a/include/Nazara/Network/WebRequest.inl b/include/Nazara/Network/WebRequest.inl index c5ccc1188..868d16a30 100644 --- a/include/Nazara/Network/WebRequest.inl +++ b/include/Nazara/Network/WebRequest.inl @@ -11,6 +11,11 @@ namespace Nz m_dataCallback = std::move(callback); } + inline void WebRequest::SetOptions(WebRequestOptionFlags options) + { + m_options = options; + } + inline void WebRequest::SetResultCallback(ResultCallback callback) { m_resultCallback = std::move(callback); diff --git a/src/Nazara/Network/WebRequest.cpp b/src/Nazara/Network/WebRequest.cpp index a5634913c..87106452c 100644 --- a/src/Nazara/Network/WebRequest.cpp +++ b/src/Nazara/Network/WebRequest.cpp @@ -57,15 +57,15 @@ namespace Nz switch (protocol) { case Nz::NetProtocol::Any: - libcurl.easy_setopt(m_curlHandle, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_WHATEVER); + libcurl.easy_setopt(m_curlHandle, CURLOPT_IPRESOLVE, long(CURL_IPRESOLVE_WHATEVER)); break; case Nz::NetProtocol::IPv4: - libcurl.easy_setopt(m_curlHandle, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); + libcurl.easy_setopt(m_curlHandle, CURLOPT_IPRESOLVE, long(CURL_IPRESOLVE_V4)); break; case Nz::NetProtocol::IPv6: - libcurl.easy_setopt(m_curlHandle, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V6); + libcurl.easy_setopt(m_curlHandle, CURLOPT_IPRESOLVE, long(CURL_IPRESOLVE_V6)); break; case Nz::NetProtocol::Unknown: