// Filter of the Internet cache
string GetCacheIconFile( string &strUrl )
{
CuUrlCacheFilter UrlCacheFilter;
return UrlCacheFilter.OnGetCacheFile(".ico", strUrl.c_str());
}
// CuUrlCacheFilter.h
class CuUrlCacheFilter
{
CuUrlCacheEntry m_UrlCacheEntry;
public:
CuUrlCacheFilter(void);
~CuUrlCacheFilter(void);
public:
string OnGetCacheFile(LPCTSTR szFilter = TEXT(".jpg") , LPCTSTR szURL = TEXT("") );
private:
BOOL IsFilter( LPCTSTR lpszSource, LPCTSTR lpszFilter );
BOOL IsFilterLocalFile( INTERNET_CACHE_ENTRY_INFO * lpEntry, LPCTSTR szFilter );
BOOL IsFilterURL(INTERNET_CACHE_ENTRY_INFO * lpEntry, LPCTSTR szURL);
};
// CuUrlCacheFilter.cpp
CuUrlCacheFilter::CuUrlCacheFilter(void)
{
m_UrlCacheEntry.ProcessEnumCacheEntry();
}
CuUrlCacheFilter::~CuUrlCacheFilter(void)
{
}
string CuUrlCacheFilter::OnGetCacheFile(LPCTSTR szFilter , LPCTSTR szURL )
{
string strResult;
INTERNET_CACHE_ENTRY_INFO* lpEntry = NULL;
for( int i = 0 ; i < m_UrlCacheEntry.size() ; i++ )
{
lpEntry = m_UrlCacheEntry.at(i);
if( IsFilterLocalFile( lpEntry, szFilter) && IsFilterURL(lpEntry, szURL) )
{
strResult = lpEntry->lpszLocalFileName;
break;
}
}
return strResult;
}
BOOL CuUrlCacheFilter::IsFilter( LPCTSTR lpszSource, LPCTSTR lpszFilter )
{
if( lpszSource == NULL )
return FALSE;
string strTempFile(lpszSource);
size_t found = strTempFile.find(lpszFilter);
return ( found != string::npos );
}
BOOL CuUrlCacheFilter::IsFilterURL(INTERNET_CACHE_ENTRY_INFO * lpEntry, LPCTSTR szURL)
{
return IsFilter(lpEntry->lpszSourceUrlName , szURL);
}
BOOL CuUrlCacheFilter::IsFilterLocalFile( INTERNET_CACHE_ENTRY_INFO * lpEntry, LPCTSTR szFilter )
{
return IsFilter(lpEntry->lpszLocalFileName , szFilter);
}
2009年12月18日 星期五
Filter of the Internet cache - CuUrlCacheFilter
訂閱:
張貼留言 (Atom)
單一職責原則很明顯的將列舉跟比對當做兩個工作, Filter 獨立出 CacheEntry 除了讓 CacheEntry 更容易被使用外, 也方便擴充不同類型的Filter!
回覆刪除