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; 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 #endif // NAZARA_NETWORK_ENUMS_HPP

View File

@ -46,6 +46,7 @@ namespace Nz
inline void SetHeader(std::string header, std::string value); inline void SetHeader(std::string header, std::string value);
void SetJSonContent(std::string encodedJSon); void SetJSonContent(std::string encodedJSon);
void SetMaximumFileSize(UInt64 maxFileSize); void SetMaximumFileSize(UInt64 maxFileSize);
inline void SetOptions(WebRequestOptionFlags options);
inline void SetResultCallback(ResultCallback callback); inline void SetResultCallback(ResultCallback callback);
void SetServiceName(std::string serviceName); void SetServiceName(std::string serviceName);
void SetURL(const std::string& url); void SetURL(const std::string& url);
@ -87,6 +88,7 @@ namespace Nz
MovablePtr<emscripten_fetch_t> m_fetchHandle; MovablePtr<emscripten_fetch_t> m_fetchHandle;
#endif #endif
ResultCallback m_resultCallback; ResultCallback m_resultCallback;
WebRequestOptionFlags m_options;
bool m_isUserAgentSet; bool m_isUserAgentSet;
}; };
} }

View File

@ -11,6 +11,11 @@ namespace Nz
m_dataCallback = std::move(callback); m_dataCallback = std::move(callback);
} }
inline void WebRequest::SetOptions(WebRequestOptionFlags options)
{
m_options = options;
}
inline void WebRequest::SetResultCallback(ResultCallback callback) inline void WebRequest::SetResultCallback(ResultCallback callback)
{ {
m_resultCallback = std::move(callback); m_resultCallback = std::move(callback);

View File

@ -57,15 +57,15 @@ namespace Nz
switch (protocol) switch (protocol)
{ {
case Nz::NetProtocol::Any: 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; break;
case Nz::NetProtocol::IPv4: 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; break;
case Nz::NetProtocol::IPv6: 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; break;
case Nz::NetProtocol::Unknown: case Nz::NetProtocol::Unknown: