/*
	File : AtkInternet.h
	Date :
	
	This is a wrapper function declaration for Winows Internet API.
	This Warpper is to handle the UNICODE as the present Windows Internet API does not support UNICODE
	

*/
#ifndef __ASTRATEK_INTERNET_HEADER
#define __ASTRATEK_INTERNET_HEADER

#include <tchar.h>
#include <windows.h>
#include <wininet.h>
#define USE_ASTRATEK_WRAPPER 1

//
// INTERNET_PROXY_INFO - structure supplied with INTERNET_OPTION_PROXY to get/
// set proxy information on a InternetOpen() handle
//
typedef struct {
    // dwAccessType - INTERNET_OPEN_TYPE_DIRECT, INTERNET_OPEN_TYPE_PROXY, or
    // INTERNET_OPEN_TYPE_PRECONFIG (set only)
    DWORD dwAccessType;
    // lpszProxy - proxy server list
    LPCSTR lpszProxy;
    // lpszProxyBypass - proxy bypass list
    LPCSTR lpszProxyBypass;
} ATK_INTERNET_PROXY_INFOW;

#ifdef _UNICODE
	#ifdef USE_ASTRATEK_WRAPPER
	#define ATK_INTERNET_PROXY_INFO  ATK_INTERNET_PROXY_INFOW
	#else
	#define ATK_INTERNET_PROXY_INFO  INTERNET_PROXY_INFO
	#endif
#else
	#define ATK_INTERNET_PROXY_INFO  INTERNET_PROXY_INFO
#endif // !UNICODE
				 

HINTERNET
ATK_InternetOpenW(
    IN LPCWSTR lpszAgent,
    IN DWORD dwAccessType,
    IN LPCWSTR lpszProxy OPTIONAL,
    IN LPCWSTR lpszProxyBypass OPTIONAL,
    IN DWORD dwFlags
    );				  

#ifdef _UNICODE

	#ifdef USE_ASTRATEK_WRAPPER
	#define ATK_InternetOpen  ATK_InternetOpenW
	#else
	#define ATK_InternetOpen  InternetOpen
	#endif
#else
	#define ATK_InternetOpen  InternetOpenA
#endif // !UNICODE




HINTERNET
ATK_InternetConnectW(
    IN HINTERNET hInternet,
    IN LPCWSTR lpszServerName,
    IN INTERNET_PORT nServerPort,
    IN LPCWSTR lpszUserName OPTIONAL,
    IN LPCWSTR lpszPassword OPTIONAL,
    IN DWORD dwService,
    IN DWORD dwFlags,
    IN DWORD dwContext
    );
#ifdef _UNICODE
	#ifdef USE_ASTRATEK_WRAPPER
	#define ATK_InternetConnect  ATK_InternetConnectW
	#else
	#define ATK_InternetConnect  InternetConnect
	#endif
#else
	#define ATK_InternetConnect  InternetConnectA
#endif // !UNICODE


HINTERNET
ATK_HttpOpenRequestW(
    IN HINTERNET hConnect,
    IN LPCWSTR lpszVerb,
    IN LPCWSTR lpszObjectName,
    IN LPCWSTR lpszVersion,
    IN LPCWSTR lpszReferrer OPTIONAL,
    IN LPCWSTR FAR * lplpszAcceptTypes OPTIONAL,
    IN DWORD dwFlags,
    IN DWORD_PTR dwContext
    );
#ifdef _UNICODE
	#ifdef  USE_ASTRATEK_WRAPPER
	#define ATK_HttpOpenRequest  ATK_HttpOpenRequestW
	#else
	#define ATK_HttpOpenRequest  HttpOpenRequest
	#endif
#else
	#define ATK_HttpOpenRequest  HttpOpenRequestA
#endif // !UNICODE



BOOL
ATK_HttpSendRequestW(
    IN HINTERNET hRequest,
    IN LPCWSTR lpszHeaders OPTIONAL,
    IN DWORD dwHeadersLength,
    IN LPVOID lpOptional OPTIONAL,
    IN DWORD dwOptionalLength
    );
#ifdef _UNICODE
	#ifdef  USE_ASTRATEK_WRAPPER
	#define ATK_HttpSendRequest  ATK_HttpSendRequestW
	#else
	#define ATK_HttpSendRequest  HttpSendRequest
	#endif
#else
	#define ATK_HttpSendRequest  HttpSendRequestA
#endif // !UNICODE





BOOL
ATK_InternetGetLastResponseInfoW(
    OUT LPDWORD lpdwError,
    OUT LPWSTR lpszBuffer OPTIONAL,
    IN OUT LPDWORD lpdwBufferLength
    );
#ifdef _UNICODE
	#ifdef  USE_ASTRATEK_WRAPPER
	#define ATK_InternetGetLastResponseInfo  ATK_InternetGetLastResponseInfoW
	#else
	#define ATK_InternetGetLastResponseInfo  InternetGetLastResponseInfo
	#endif
#else
	#define ATK_InternetGetLastResponseInfo  InternetGetLastResponseInfoA
#endif



BOOL
ATK_HttpQueryInfoW(
    IN HINTERNET hRequest,
    IN DWORD dwInfoLevel,
    IN OUT LPVOID lpBuffer OPTIONAL,
    IN OUT LPDWORD lpdwBufferLength,
    IN OUT LPDWORD lpdwIndex OPTIONAL
	);

#ifdef _UNICODE
	#ifdef  USE_ASTRATEK_WRAPPER
	#define ATK_HttpQueryInfo  ATK_HttpQueryInfoW
	#else
	#define ATK_HttpQueryInfo  HttpQueryInfo
	#endif
#else
	#define ATK_HttpQueryInfo  HttpQueryInfoA
#endif

//
//  In this functin declaration we have modified the first
//  parameter type as TCHAR to have uniformity in coding in tha APP 
//  
BOOL ATK_InternetGetCookieW(IN TCHAR *lpszUrl,
					       IN TCHAR *lpszCookieName,
					  	   OUT TCHAR *lpCookieData,
						   OUT LPDWORD lpdwSize);
#ifdef _UNICODE
	#ifdef  USE_ASTRATEK_WRAPPER
	#define ATK_InternetGetCookie  ATK_InternetGetCookieW
	#else
	#define ATK_InternetGetCookie  InternetGetCookie
	#endif

#else
	#define ATK_InternetGetCookie  InternetGetCookieA
#endif

BOOL
ATK_InternetQueryOptionW(IN HINTERNET hInternet,
						 IN DWORD dwOption,
						 OUT LPVOID lpBuffer,
						 IN OUT LPDWORD lpdwBufferLength);

#ifdef _UNICODE
	#ifdef  USE_ASTRATEK_WRAPPER
	#define ATK_InternetQueryOption  ATK_InternetQueryOptionW
	#else
	#define ATK_InternetQueryOption  InternetQueryOption
	#endif
#else
	#define ATK_InternetQueryOption  InternetQueryOptionA
#endif





#endif