/*++ Copyright (c) 1996 Microsoft Corporation Module Name : linkload.h Abstract: Link loader class definitions. It uses wininet API to load the web page from the internet. Author: Michael Cheuk (mcheuk) 22-Nov-1996 Project: Link Checker Revision History: --*/ #ifndef _LINKLOAD_H_ #define _LINKLOAD_H_ #include "inetapi.h" //------------------------------------------------------------------ // Forward declaration // class CLink; //------------------------------------------------------------------ // This is a wrapper class for HINTERNET. It takes care of internet // handle cleaning up. // class CAutoInternetHandle { // Public interfaces public: // Constructor CAutoInternetHandle( HINTERNET hHandle = NULL ) { m_hHandle = hHandle; } // Destructor ~CAutoInternetHandle() { if(m_hHandle) { ASSERT(CWininet::IsLoaded()); VERIFY(CWininet::InternetCloseHandle(m_hHandle)); } } // Operator overloads. These functions make // CAutoInternetHandle instance behaves like a HINTERNET operator HINTERNET() const { return m_hHandle; } const HINTERNET& operator=( const HINTERNET& hHandle ) { m_hHandle = hHandle; return m_hHandle; } // Protected member protected: HINTERNET m_hHandle; // Actual HINTERNET }; // class CAutoInternetHandle //------------------------------------------------------------------ // Link loader class. It uses wininet API to load the web // page from the internet. // class CLinkLoader { // Public interfaces public: // One time link loader create funtion BOOL Create( const CString& strUserAgent, // HTTP user agent name const CString& strAdditionalHeaders // addtional HTTP headers ); // Load a web link BOOL Load( CLink& link, BOOL fLocalLink ); // Change the loader properties BOOL ChangeProperties( const CString& strUserAgent, const CString& strAdditionalHeaders ); // Protected interfaces protected: // Load a HTTP link BOOL LoadHTTP( CLink& link, BOOL fReadFile, LPCTSTR szHostName, LPCTSTR szUrlPath, int iRedirectCount = 0 ); // Load a URL (non-HTTP) link BOOL LoadURL( CLink& link ); // Wininet failed clean up subroutine BOOL WininetFailed( CLink& link ); // Protected interfaces protected: // Handle for internet session (one per instance) CAutoInternetHandle m_hInternetSession; // Additional http header string CString m_strAdditionalHeaders; }; // class CLinkLoader #endif // _LINKLOAD_H_