mirror of
https://github.com/copyrighttxt/watrbx-game-engine.git
synced 2026-09-04 20:57:49 +00:00
546 lines
19 KiB
C++
546 lines
19 KiB
C++
//// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|
|
//// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
//// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|
|
//// PARTICULAR PURPOSE.
|
|
////
|
|
//// Copyright (c) Microsoft Corporation. All rights reserved
|
|
#include "pch.h"
|
|
#include "ErrorUtils.h"
|
|
|
|
#if TV_API
|
|
|
|
using namespace Platform;
|
|
using namespace Windows::Foundation;
|
|
using namespace Windows::Storage::Streams;
|
|
|
|
namespace Microsoft {
|
|
namespace Xbox {
|
|
namespace GameChat {
|
|
|
|
enum WebErrorStatus
|
|
{
|
|
WebErrorStatus_Unknown = 0,
|
|
WebErrorStatus_CertificateCommonNameIsIncorrect = 1,
|
|
WebErrorStatus_CertificateExpired = 2,
|
|
WebErrorStatus_CertificateContainsErrors = 3,
|
|
WebErrorStatus_CertificateRevoked = 4,
|
|
WebErrorStatus_CertificateIsInvalid = 5,
|
|
WebErrorStatus_ServerUnreachable = 6,
|
|
WebErrorStatus_Timeout = 7,
|
|
WebErrorStatus_ErrorHttpInvalidServerResponse = 8,
|
|
WebErrorStatus_ConnectionAborted = 9,
|
|
WebErrorStatus_ConnectionReset = 10,
|
|
WebErrorStatus_Disconnected = 11,
|
|
WebErrorStatus_HttpToHttpsOnRedirection = 12,
|
|
WebErrorStatus_HttpsToHttpOnRedirection = 13,
|
|
WebErrorStatus_CannotConnect = 14,
|
|
WebErrorStatus_HostNameNotResolved = 15,
|
|
WebErrorStatus_OperationCanceled = 16,
|
|
WebErrorStatus_RedirectFailed = 17,
|
|
WebErrorStatus_UnexpectedStatusCode = 18,
|
|
WebErrorStatus_UnexpectedRedirection = 19,
|
|
WebErrorStatus_UnexpectedClientError = 20,
|
|
WebErrorStatus_UnexpectedServerError = 21,
|
|
WebErrorStatus_MultipleChoices = 300,
|
|
WebErrorStatus_MovedPermanently = 301,
|
|
WebErrorStatus_Found = 302,
|
|
WebErrorStatus_SeeOther = 303,
|
|
WebErrorStatus_NotModified = 304,
|
|
WebErrorStatus_UseProxy = 305,
|
|
WebErrorStatus_TemporaryRedirect = 307,
|
|
WebErrorStatus_BadRequest = 400,
|
|
WebErrorStatus_Unauthorized = 401,
|
|
WebErrorStatus_PaymentRequired = 402,
|
|
WebErrorStatus_Forbidden = 403,
|
|
WebErrorStatus_NotFound = 404,
|
|
WebErrorStatus_MethodNotAllowed = 405,
|
|
WebErrorStatus_NotAcceptable = 406,
|
|
WebErrorStatus_ProxyAuthenticationRequired = 407,
|
|
WebErrorStatus_RequestTimeout = 408,
|
|
WebErrorStatus_Conflict = 409,
|
|
WebErrorStatus_Gone = 410,
|
|
WebErrorStatus_LengthRequired = 411,
|
|
WebErrorStatus_PreconditionFailed = 412,
|
|
WebErrorStatus_RequestEntityTooLarge = 413,
|
|
WebErrorStatus_RequestUriTooLong = 414,
|
|
WebErrorStatus_UnsupportedMediaType = 415,
|
|
WebErrorStatus_RequestedRangeNotSatisfiable = 416,
|
|
WebErrorStatus_ExpectationFailed = 417,
|
|
WebErrorStatus_InternalServerError = 500,
|
|
WebErrorStatus_NotImplemented = 501,
|
|
WebErrorStatus_BadGateway = 502,
|
|
WebErrorStatus_ServiceUnavailable = 503,
|
|
WebErrorStatus_GatewayTimeout = 504,
|
|
WebErrorStatus_HttpVersionNotSupported = 505
|
|
};
|
|
|
|
HRESULT
|
|
ErrorUtils::ConvertHttpStatusCodeToHR(
|
|
_In_ uint32 httpStatusCode
|
|
)
|
|
{
|
|
HRESULT hr = HTTP_E_STATUS_UNEXPECTED;
|
|
// 2xx are http success codes
|
|
if ((httpStatusCode >= 200) && (httpStatusCode < 300))
|
|
{
|
|
hr = S_OK;
|
|
}
|
|
// MSXML XHR bug: get_status() returns HTTP/1223 for HTTP/204:
|
|
// http://blogs.msdn.com/b/ieinternals/archive/2009/07/23/the-ie8-native-xmlhttprequest-object.aspx
|
|
// treat it as success code as well
|
|
else if ( httpStatusCode == 1223 )
|
|
{
|
|
hr = S_OK;
|
|
}
|
|
else
|
|
{
|
|
switch(httpStatusCode)
|
|
{
|
|
//
|
|
// 101 server has switched protocols in upgrade header. Not suppose to happen in product.
|
|
//
|
|
case 101:
|
|
hr = INET_E_UNKNOWN_PROTOCOL;
|
|
break;
|
|
|
|
//
|
|
// 300 Multiple Choices
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_MultipleChoices:
|
|
hr = HTTP_E_STATUS_AMBIGUOUS;
|
|
break;
|
|
|
|
//
|
|
// 301 Moved Permanently
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_MovedPermanently:
|
|
hr = HTTP_E_STATUS_MOVED;
|
|
break;
|
|
|
|
//
|
|
// 302 Found
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_Found:
|
|
hr = HTTP_E_STATUS_REDIRECT;
|
|
break;
|
|
|
|
//
|
|
// 303 See Other
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_SeeOther:
|
|
hr = HTTP_E_STATUS_REDIRECT_METHOD;
|
|
break;
|
|
|
|
//
|
|
// 304 Not Modified
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_NotModified:
|
|
hr = HTTP_E_STATUS_NOT_MODIFIED;
|
|
break;
|
|
|
|
//
|
|
// 305 Use Proxy
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_UseProxy:
|
|
hr = HTTP_E_STATUS_USE_PROXY;
|
|
break;
|
|
|
|
//
|
|
// 307 Temporary Redirect
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_TemporaryRedirect:
|
|
hr = HTTP_E_STATUS_REDIRECT_KEEP_VERB;
|
|
break;
|
|
|
|
//
|
|
// 400 Bad Request
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_BadRequest:
|
|
hr = HTTP_E_STATUS_BAD_REQUEST;
|
|
break;
|
|
|
|
//
|
|
// 401 Unauthorized
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_Unauthorized:
|
|
hr = HTTP_E_STATUS_DENIED;
|
|
break;
|
|
|
|
//
|
|
// 402 Payment Required
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_PaymentRequired:
|
|
hr = HTTP_E_STATUS_PAYMENT_REQ;
|
|
break;
|
|
|
|
//
|
|
// 403 Forbidden.
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_Forbidden:
|
|
hr = HTTP_E_STATUS_FORBIDDEN;
|
|
break;
|
|
|
|
//
|
|
// 404 Not Found.
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_NotFound:
|
|
hr = HTTP_E_STATUS_NOT_FOUND;
|
|
break;
|
|
|
|
//
|
|
// 405 Method Not Allowed
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_MethodNotAllowed:
|
|
hr = HTTP_E_STATUS_BAD_METHOD;
|
|
break;
|
|
|
|
//
|
|
// 406 Not Acceptable
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_NotAcceptable:
|
|
hr = HTTP_E_STATUS_NONE_ACCEPTABLE;
|
|
break;
|
|
//
|
|
// 407 Proxy Authentication Required
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_ProxyAuthenticationRequired:
|
|
hr = HTTP_E_STATUS_PROXY_AUTH_REQ;
|
|
break;
|
|
//
|
|
// 408 Request Timeout
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_RequestTimeout:
|
|
hr = HTTP_E_STATUS_REQUEST_TIMEOUT;
|
|
break;
|
|
|
|
//
|
|
// 409 Conflict
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_Conflict:
|
|
hr = HTTP_E_STATUS_CONFLICT;
|
|
break;
|
|
|
|
//
|
|
// 410 Gone
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_Gone:
|
|
hr = HTTP_E_STATUS_GONE;
|
|
break;
|
|
|
|
//
|
|
// 411 Length Required
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_LengthRequired:
|
|
hr = HTTP_E_STATUS_LENGTH_REQUIRED;
|
|
break;
|
|
|
|
//
|
|
// 412 Precondition Failed
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_PreconditionFailed:
|
|
hr = HTTP_E_STATUS_PRECOND_FAILED;
|
|
break;
|
|
|
|
//
|
|
// 413 Request Entity Too Large
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_RequestEntityTooLarge:
|
|
hr = HTTP_E_STATUS_REQUEST_TOO_LARGE;
|
|
break;
|
|
|
|
//
|
|
// 414 Request URI Too Long
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_RequestUriTooLong:
|
|
hr = HTTP_E_STATUS_URI_TOO_LONG;
|
|
break;
|
|
|
|
//
|
|
// 415 Unsupported Media Type
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_UnsupportedMediaType:
|
|
hr = HTTP_E_STATUS_UNSUPPORTED_MEDIA;
|
|
break;
|
|
|
|
//
|
|
// 416 Requested Range Not Satisfiable
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_RequestedRangeNotSatisfiable:
|
|
hr = HTTP_E_STATUS_RANGE_NOT_SATISFIABLE;
|
|
break;
|
|
|
|
//
|
|
// 417 Expectation Failed
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_ExpectationFailed:
|
|
hr = HTTP_E_STATUS_EXPECTATION_FAILED;
|
|
break;
|
|
|
|
//
|
|
// 449 Retry after doing the appropriate action.
|
|
//
|
|
case 449:
|
|
hr = HTTP_E_STATUS_BAD_REQUEST;
|
|
break;
|
|
|
|
//
|
|
// 500 Internal Server Error
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_InternalServerError:
|
|
hr = HTTP_E_STATUS_SERVER_ERROR;
|
|
break;
|
|
|
|
//
|
|
// 501 Not Implemented
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_NotImplemented:
|
|
hr = HTTP_E_STATUS_NOT_SUPPORTED;
|
|
break;
|
|
|
|
//
|
|
// 502 Bad Gateway
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_BadGateway:
|
|
hr = HTTP_E_STATUS_BAD_GATEWAY;
|
|
break;
|
|
|
|
//
|
|
// 503 Service Unavailable
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_ServiceUnavailable:
|
|
hr = HTTP_E_STATUS_SERVICE_UNAVAIL;
|
|
break;
|
|
|
|
//
|
|
// 504 Gateway Timeout
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_GatewayTimeout:
|
|
hr = HTTP_E_STATUS_GATEWAY_TIMEOUT;
|
|
break;
|
|
|
|
//
|
|
// 505 HTTP Version Not Supported.
|
|
//
|
|
case WebErrorStatus::WebErrorStatus_HttpVersionNotSupported:
|
|
hr = HTTP_E_STATUS_VERSION_NOT_SUP;
|
|
break;
|
|
|
|
default:
|
|
hr = HTTP_E_STATUS_UNEXPECTED;
|
|
break;
|
|
}
|
|
}
|
|
|
|
return hr;
|
|
}
|
|
|
|
HRESULT
|
|
ErrorUtils::ConvertExceptionToHRESULT()
|
|
{
|
|
// Default value, if there is no exception appears, return S_OK
|
|
HRESULT hr = S_OK;
|
|
|
|
try
|
|
{
|
|
throw;
|
|
}
|
|
|
|
// std exceptions
|
|
catch( const std::bad_alloc& ) // is an exception
|
|
{
|
|
hr = E_OUTOFMEMORY;
|
|
}
|
|
catch( const std::invalid_argument& ) // is a logic_error
|
|
{
|
|
hr = E_INVALIDARG;
|
|
}
|
|
catch( const std::domain_error& ) // is a logic_error
|
|
{
|
|
hr = E_INVALIDARG;
|
|
}
|
|
catch( const std::out_of_range& ) // is a logic_error
|
|
{
|
|
hr = E_INVALIDARG;
|
|
}
|
|
catch( const std::length_error& ) // is a logic_error
|
|
{
|
|
hr = __HRESULT_FROM_WIN32( ERROR_ARITHMETIC_OVERFLOW );
|
|
}
|
|
catch( const std::overflow_error& ) // is a runtime_error
|
|
{
|
|
hr = __HRESULT_FROM_WIN32( ERROR_ARITHMETIC_OVERFLOW );
|
|
}
|
|
catch( const std::underflow_error& ) // is a runtime_error
|
|
{
|
|
hr = RPC_S_FP_UNDERFLOW;
|
|
}
|
|
catch( const std::range_error& ) // is a runtime_error
|
|
{
|
|
hr = E_INVALIDARG;
|
|
}
|
|
catch ( const std::logic_error& ) // is an exception
|
|
{
|
|
hr = E_UNEXPECTED;
|
|
}
|
|
catch ( const std::runtime_error& ) // is an exception
|
|
{
|
|
hr = E_FAIL;
|
|
}
|
|
catch ( const std::exception& ) // base class for standard C++ exceptions
|
|
{
|
|
hr = E_FAIL;
|
|
}
|
|
catch ( Platform::Exception^ exception )
|
|
{
|
|
hr = (HRESULT)exception->HResult;
|
|
}
|
|
catch ( HRESULT exceptionHR )
|
|
{
|
|
hr = exceptionHR;
|
|
}
|
|
catch (...) // everything else
|
|
{
|
|
hr = E_FAIL;
|
|
}
|
|
|
|
return hr;
|
|
}
|
|
|
|
Platform::String^ ErrorUtils::ConvertHResultToString( HRESULT hr )
|
|
{
|
|
WCHAR tmp[ 1024 ];
|
|
_snwprintf_s( tmp, _countof( tmp ), _TRUNCATE, L"0x%0.8x", hr);
|
|
return ref new Platform::String(tmp);
|
|
}
|
|
|
|
Platform::String^ ErrorUtils::ConvertHResultToErrorName( HRESULT hr )
|
|
{
|
|
switch( hr )
|
|
{
|
|
// Generic errors
|
|
case S_OK: return L"S_OK";
|
|
case S_FALSE: return L"S_FALSE";
|
|
case E_OUTOFMEMORY: return L"E_OUTOFMEMORY";
|
|
case E_ACCESSDENIED: return L"E_ACCESSDENIED";
|
|
case E_INVALIDARG: return L"E_INVALIDARG";
|
|
case E_UNEXPECTED: return L"E_UNEXPECTED";
|
|
case E_ABORT: return L"E_ABORT";
|
|
case E_FAIL: return L"E_FAIL";
|
|
case E_NOTIMPL: return L"E_NOTIMPL";
|
|
case E_ILLEGAL_METHOD_CALL: return L"E_ILLEGAL_METHOD_CALL";
|
|
|
|
// Authentication specific errors
|
|
case 0x87DD0003: return L"AM_E_XASD_UNEXPECTED";
|
|
case 0x87DD0004: return L"AM_E_XASU_UNEXPECTED";
|
|
case 0x87DD0005: return L"AM_E_XAST_UNEXPECTED";
|
|
case 0x87DD0006: return L"AM_E_XSTS_UNEXPECTED";
|
|
case 0x87DD0007: return L"AM_E_XDEVICE_UNEXPECTED";
|
|
case 0x87DD0008: return L"AM_E_DEVMODE_NOT_AUTHORIZED";
|
|
case 0x87DD0009: return L"AM_E_NOT_AUTHORIZED";
|
|
case 0x87DD000A: return L"AM_E_FORBIDDEN";
|
|
case 0x87DD000B: return L"AM_E_UNKNOWN_TARGET";
|
|
case 0x87DD000C: return L"AM_E_NSAL_READ_FAILED";
|
|
case 0x87DD000D: return L"AM_E_TITLE_NOT_AUTHENTICATED";
|
|
case 0x87DD000E: return L"AM_E_TITLE_NOT_AUTHORIZED";
|
|
case 0x87DD000F: return L"AM_E_DEVICE_NOT_AUTHENTICATED";
|
|
case 0x87DD0010: return L"AM_E_INVALID_USER_INDEX";
|
|
case 0x8015DC00: return L"XO_E_DEVMODE_NOT_AUTHORIZED";
|
|
case 0x8015DC01: return L"XO_E_SYSTEM_UPDATE_REQUIRED";
|
|
case 0x8015DC02: return L"XO_E_CONTENT_UPDATE_REQUIRED";
|
|
case 0x8015DC03: return L"XO_E_ENFORCEMENT_BAN";
|
|
case 0x8015DC04: return L"XO_E_THIRD_PARTY_BAN";
|
|
case 0x8015DC05: return L"XO_E_ACCOUNT_PARENTALLY_RESTRICTED";
|
|
case 0x8015DC06: return L"XO_E_DEVICE_SUBSCRIPTION_NOT_ACTIVATED";
|
|
case 0x8015DC08: return L"XO_E_ACCOUNT_BILLING_MAINTENANCE_REQUIRED";
|
|
case 0x8015DC09: return L"XO_E_ACCOUNT_CREATION_REQUIRED";
|
|
case 0x8015DC0A: return L"XO_E_ACCOUNT_TERMS_OF_USE_NOT_ACCEPTED";
|
|
case 0x8015DC0B: return L"XO_E_ACCOUNT_COUNTRY_NOT_AUTHORIZED";
|
|
case 0x8015DC0C: return L"XO_E_ACCOUNT_AGE_VERIFICATION_REQUIRED";
|
|
case 0x8015DC0D: return L"XO_E_ACCOUNT_CURFEW";
|
|
case 0x8015DC0E: return L"XO_E_ACCOUNT_ZEST_MAINTENANCE_REQUIRED";
|
|
case 0x8015DC0F: return L"XO_E_ACCOUNT_CSV_TRANSITION_REQUIRED";
|
|
case 0x8015DC10: return L"XO_E_ACCOUNT_MAINTENANCE_REQUIRED";
|
|
case 0x8015DC11: return L"XO_E_ACCOUNT_TYPE_NOT_ALLOWED";
|
|
case 0x8015DC12: return L"XO_E_CONTENT_ISOLATION (Verify SCID / Sandbox)";
|
|
case 0x8015DC13: return L"XO_E_ACCOUNT_NAME_CHANGE_REQUIRED";
|
|
case 0x8015DC14: return L"XO_E_DEVICE_CHALLENGE_REQUIRED";
|
|
case 0x8015DC20: return L"XO_E_EXPIRED_DEVICE_TOKEN";
|
|
case 0x8015DC21: return L"XO_E_EXPIRED_TITLE_TOKEN";
|
|
case 0x8015DC22: return L"XO_E_EXPIRED_USER_TOKEN";
|
|
case 0x8015DC23: return L"XO_E_INVALID_DEVICE_TOKEN";
|
|
case 0x8015DC24: return L"XO_E_INVALID_TITLE_TOKEN";
|
|
case 0x8015DC25: return L"XO_E_INVALID_USER_TOKEN";
|
|
|
|
// HTTP specific errors
|
|
case WEB_E_UNSUPPORTED_FORMAT: return L"WEB_E_UNSUPPORTED_FORMAT";
|
|
case WEB_E_INVALID_XML: return L"WEB_E_INVALID_XML";
|
|
case WEB_E_MISSING_REQUIRED_ELEMENT: return L"WEB_E_MISSING_REQUIRED_ELEMENT";
|
|
case WEB_E_MISSING_REQUIRED_ATTRIBUTE: return L"WEB_E_MISSING_REQUIRED_ATTRIBUTE";
|
|
case WEB_E_UNEXPECTED_CONTENT: return L"WEB_E_UNEXPECTED_CONTENT";
|
|
case WEB_E_RESOURCE_TOO_LARGE: return L"WEB_E_RESOURCE_TOO_LARGE";
|
|
case WEB_E_INVALID_JSON_STRING: return L"WEB_E_INVALID_JSON_STRING";
|
|
case WEB_E_INVALID_JSON_NUMBER: return L"WEB_E_INVALID_JSON_NUMBER";
|
|
case WEB_E_JSON_VALUE_NOT_FOUND: return L"WEB_E_JSON_VALUE_NOT_FOUND";
|
|
case HTTP_E_STATUS_UNEXPECTED: return L"HTTP_E_STATUS_UNEXPECTED";
|
|
case HTTP_E_STATUS_UNEXPECTED_REDIRECTION: return L"HTTP_E_STATUS_UNEXPECTED_REDIRECTION";
|
|
case HTTP_E_STATUS_UNEXPECTED_CLIENT_ERROR: return L"HTTP_E_STATUS_UNEXPECTED_CLIENT_ERROR";
|
|
case HTTP_E_STATUS_UNEXPECTED_SERVER_ERROR: return L"HTTP_E_STATUS_UNEXPECTED_SERVER_ERROR";
|
|
case HTTP_E_STATUS_AMBIGUOUS: return L"HTTP_E_STATUS_AMBIGUOUS";
|
|
case HTTP_E_STATUS_MOVED: return L"HTTP_E_STATUS_MOVED";
|
|
case HTTP_E_STATUS_REDIRECT: return L"HTTP_E_STATUS_REDIRECT";
|
|
case HTTP_E_STATUS_REDIRECT_METHOD: return L"HTTP_E_STATUS_REDIRECT_METHOD";
|
|
case HTTP_E_STATUS_NOT_MODIFIED: return L"HTTP_E_STATUS_NOT_MODIFIED";
|
|
case HTTP_E_STATUS_USE_PROXY: return L"HTTP_E_STATUS_USE_PROXY";
|
|
case HTTP_E_STATUS_REDIRECT_KEEP_VERB: return L"HTTP_E_STATUS_REDIRECT_KEEP_VERB";
|
|
case HTTP_E_STATUS_BAD_REQUEST: return L"HTTP_E_STATUS_BAD_REQUEST";
|
|
case HTTP_E_STATUS_DENIED: return L"HTTP_E_STATUS_DENIED";
|
|
case HTTP_E_STATUS_PAYMENT_REQ: return L"HTTP_E_STATUS_PAYMENT_REQ";
|
|
case HTTP_E_STATUS_FORBIDDEN: return L"HTTP_E_STATUS_FORBIDDEN";
|
|
case HTTP_E_STATUS_NOT_FOUND: return L"HTTP_E_STATUS_NOT_FOUND";
|
|
case HTTP_E_STATUS_BAD_METHOD: return L"HTTP_E_STATUS_BAD_METHOD";
|
|
case HTTP_E_STATUS_NONE_ACCEPTABLE: return L"HTTP_E_STATUS_NONE_ACCEPTABLE";
|
|
case HTTP_E_STATUS_PROXY_AUTH_REQ: return L"HTTP_E_STATUS_PROXY_AUTH_REQ";
|
|
case HTTP_E_STATUS_REQUEST_TIMEOUT: return L"HTTP_E_STATUS_REQUEST_TIMEOUT";
|
|
case HTTP_E_STATUS_CONFLICT: return L"HTTP_E_STATUS_CONFLICT";
|
|
case HTTP_E_STATUS_GONE: return L"HTTP_E_STATUS_GONE";
|
|
case HTTP_E_STATUS_LENGTH_REQUIRED: return L"HTTP_E_STATUS_LENGTH_REQUIRED";
|
|
case HTTP_E_STATUS_PRECOND_FAILED: return L"HTTP_E_STATUS_PRECOND_FAILED";
|
|
case HTTP_E_STATUS_REQUEST_TOO_LARGE: return L"HTTP_E_STATUS_REQUEST_TOO_LARGE";
|
|
case HTTP_E_STATUS_URI_TOO_LONG: return L"HTTP_E_STATUS_URI_TOO_LONG";
|
|
case HTTP_E_STATUS_UNSUPPORTED_MEDIA: return L"HTTP_E_STATUS_UNSUPPORTED_MEDIA";
|
|
case HTTP_E_STATUS_RANGE_NOT_SATISFIABLE: return L"HTTP_E_STATUS_RANGE_NOT_SATISFIABLE";
|
|
case HTTP_E_STATUS_EXPECTATION_FAILED: return L"HTTP_E_STATUS_EXPECTATION_FAILED";
|
|
case HTTP_E_STATUS_SERVER_ERROR: return L"HTTP_E_STATUS_SERVER_ERROR";
|
|
case HTTP_E_STATUS_NOT_SUPPORTED: return L"HTTP_E_STATUS_NOT_SUPPORTED";
|
|
case HTTP_E_STATUS_BAD_GATEWAY: return L"HTTP_E_STATUS_BAD_GATEWAY";
|
|
case HTTP_E_STATUS_SERVICE_UNAVAIL: return L"HTTP_E_STATUS_SERVICE_UNAVAIL";
|
|
case HTTP_E_STATUS_GATEWAY_TIMEOUT: return L"HTTP_E_STATUS_GATEWAY_TIMEOUT";
|
|
case HTTP_E_STATUS_VERSION_NOT_SUP: return L"HTTP_E_STATUS_VERSION_NOT_SUP";
|
|
|
|
// WinINet specific errors
|
|
case INET_E_INVALID_URL: return L"INET_E_INVALID_URL";
|
|
case INET_E_NO_SESSION: return L"INET_E_NO_SESSION";
|
|
case INET_E_CANNOT_CONNECT: return L"INET_E_CANNOT_CONNECT";
|
|
case INET_E_RESOURCE_NOT_FOUND: return L"INET_E_RESOURCE_NOT_FOUND";
|
|
case INET_E_OBJECT_NOT_FOUND: return L"INET_E_OBJECT_NOT_FOUND";
|
|
case INET_E_DATA_NOT_AVAILABLE: return L"INET_E_DATA_NOT_AVAILABLE";
|
|
case INET_E_DOWNLOAD_FAILURE: return L"INET_E_DOWNLOAD_FAILURE";
|
|
case INET_E_AUTHENTICATION_REQUIRED: return L"INET_E_AUTHENTICATION_REQUIRED";
|
|
case INET_E_NO_VALID_MEDIA: return L"INET_E_NO_VALID_MEDIA";
|
|
case INET_E_CONNECTION_TIMEOUT: return L"INET_E_CONNECTION_TIMEOUT";
|
|
case INET_E_INVALID_REQUEST: return L"INET_E_INVALID_REQUEST";
|
|
case INET_E_UNKNOWN_PROTOCOL: return L"INET_E_UNKNOWN_PROTOCOL";
|
|
case INET_E_SECURITY_PROBLEM: return L"INET_E_SECURITY_PROBLEM";
|
|
case INET_E_CANNOT_LOAD_DATA: return L"INET_E_CANNOT_LOAD_DATA";
|
|
case INET_E_CANNOT_INSTANTIATE_OBJECT: return L"INET_E_CANNOT_INSTANTIATE_OBJECT";
|
|
case INET_E_INVALID_CERTIFICATE: return L"INET_E_INVALID_CERTIFICATE";
|
|
case INET_E_REDIRECT_FAILED: return L"INET_E_REDIRECT_FAILED";
|
|
case INET_E_REDIRECT_TO_DIR: return L"INET_E_REDIRECT_TO_DIR";
|
|
}
|
|
|
|
return L"Unknown error";
|
|
}
|
|
|
|
}}}
|
|
|
|
#endif |