149 lines
2.5 KiB
C++
149 lines
2.5 KiB
C++
/*++
|
|
|
|
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_
|