Network/WebRequest: Add option flags

This commit is contained in:
SirLynix 2024-01-14 23:03:45 +01:00
parent c52ffa15c4
commit f1de6f9198
4 changed files with 26 additions and 3 deletions

View File

@ -119,6 +119,22 @@ namespace Nz
};
constexpr std::size_t SocketTypeCount = static_cast<std::size_t>(SocketType::Max) + 1;
enum class WebRequestOption
{
FailOnError,
FollowRedirects,
Max = FollowRedirects
};
template<>
struct EnumAsFlags<WebRequestOption>
{
static constexpr WebRequestOption max = WebRequestOption::Max;
};
using WebRequestOptionFlags = Flags<WebRequestOption>;
}
#endif // NAZARA_NETWORK_ENUMS_HPP

View File

@ -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<emscripten_fetch_t> m_fetchHandle;
#endif
ResultCallback m_resultCallback;
WebRequestOptionFlags m_options;
bool m_isUserAgentSet;
};
}

View File

@ -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);

View File

@ -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: