Files
Leviathan/Library/Internal/source/internet/XHttpUtil.cpp
T
2026-06-01 12:46:52 +02:00

87 lines
1.9 KiB
C++

#include "XHttpUtil.h"
namespace XHttpUtil
{
DWORD ChooseAuthScheme( DWORD dwSupportedSchemes )
{
if( dwSupportedSchemes & WINHTTP_AUTH_SCHEME_NEGOTIATE )
return WINHTTP_AUTH_SCHEME_NEGOTIATE;
else if( dwSupportedSchemes & WINHTTP_AUTH_SCHEME_NTLM )
return WINHTTP_AUTH_SCHEME_NTLM;
else if( dwSupportedSchemes & WINHTTP_AUTH_SCHEME_PASSPORT )
return WINHTTP_AUTH_SCHEME_PASSPORT;
else if( dwSupportedSchemes & WINHTTP_AUTH_SCHEME_DIGEST )
return WINHTTP_AUTH_SCHEME_DIGEST;
else if( dwSupportedSchemes & WINHTTP_AUTH_SCHEME_BASIC )
return WINHTTP_AUTH_SCHEME_BASIC;
return 0;
}
const wchar_t* GetErrorFunction( DWORD_PTR dwWhere )
{
switch( dwWhere )
{
case API_RECEIVE_RESPONSE:
return L"WinHttpReceiveResponse";
case API_QUERY_DATA_AVAILABLE:
return L"WinHttpQueryDataAvailable";
case API_READ_DATA:
return L"WinHttpReadData";
case API_WRITE_DATA:
return L"WinHttpWriteData";
case API_SEND_REQUEST:
return L"WinHttpSendRequest";
case API_HEADER_STATUS_CODE:
return L"WinHttpQueryHeaders_StatusCode";
case API_HANDLE_CLOSING:
return L"Callback_Closing";
}
return L"Unknown_function";
}
XHttpSetRequestHeader::XHttpSetRequestHeader( HINTERNET hRequest )
: m_hRequest( hRequest )
{
}
XHttpSetRequestHeader::~XHttpSetRequestHeader()
{
m_hRequest = NULL;
}
bool XHttpSetRequestHeader::Add( const std::wstring& strName, const std::wstring& strValue )
{
std::wstring strHeader = strName + L": " + strValue + L"\r\n";
return Add( strHeader );
}
bool XHttpSetRequestHeader::Add( const std::wstring& strHeader )
{
if( strHeader.empty() == false )
{
if( ::WinHttpAddRequestHeaders(
m_hRequest,
strHeader.c_str(),
static_cast< DWORD >( strHeader.size() ),
WINHTTP_ADDREQ_FLAG_ADD | WINHTTP_ADDREQ_FLAG_REPLACE )
== FALSE )
{
return false;
}
}
return true;
}
};