Files
Work/proto/source/Internet.hpp
2024-08-07 09:16:27 -04:00

68 lines
1.4 KiB
C++

#ifndef _PROTO_INTERNET_HPP_
#define _PROTO_INTERNET_HPP_
#ifndef _COMMON_EXCEPTION_HPP_
#include <common/except.hpp>
#endif
#ifndef _COMMON_WININET_HPP_
#include <common/wininet.hpp>
#endif
class Internet
{
public:
typedef enum AccessType{OpenDirect=INTERNET_OPEN_TYPE_DIRECT,PreConfig=INTERNET_OPEN_TYPE_PRECONFIG,AutoProxy=
INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY,Proxy=INTERNET_OPEN_TYPE_PROXY};
typedef enum Flags{Async=INTERNET_FLAG_ASYNC,FromCache=INTERNET_FLAG_FROM_CACHE,
Offline=INTERNET_FLAG_OFFLINE,InvalidPort=INTERNET_INVALID_PORT_NUMBER,None=0};
Internet();
virtual ~Internet();
bool open(AccessType accessType=AutoProxy,const String &strProxy=String(),const String &proxyBypass=String(),Flags flags=None);
bool connect();
void close();
bool isOkay(void)const;
HINTERNET getHANDLE(void)const;
private:
HINTERNET mhInternet;
};
inline
Internet::Internet()
: mhInternet(0)
{
}
inline
Internet::~Internet()
{
close();
}
inline
bool Internet::open(AccessType accessType,const String &strProxy,const String &proxyByPass,Flags flags)
{
close();
mhInternet=::InternetOpen("Custom Agent",accessType,strProxy.str(),proxyByPass.str(),flags);
return isOkay();
}
inline
void Internet::close()
{
if(!isOkay())return;
::InternetCloseHandle(mhInternet);
mhInternet=0;
}
inline
HINTERNET Internet::getHANDLE(void)const
{
return mhInternet;
}
inline
bool Internet::isOkay()const
{
return mhInternet?true:false;
}
#endif