1 #ifndef _LINK4SE_FILE_H_031208_
2 #define _LINK4SE_FILE_H_031208_
3
4 #include "Tse.h"
5 #include "Url.h"
6 #include "Page.h"
7 #include "FileEngine.h"
8
9 class CLink4SEFile : public CFileEngine
10 {
11 public:
12 CLink4SEFile(string str);
13 CLink4SEFile();
14 virtual ~CLink4SEFile();
15
16 inline int GetFileType() { return LINK4SE; }
17
18 virtual bool Write(void *arg);
19 };
20
21 #endif /* _LINK4SE_FILE_H_031208_ */
1 #include "Link4SEFile.h"
2
3 extern map<string,string> mapCacheHostLookup;
4 extern vector<string> vsParsedLinks;
5
6 CLink4SEFile::CLink4SEFile()
7 {
8 }
9
10 CLink4SEFile::CLink4SEFile(string str) : CFileEngine(str)
11 {
12 }
13
14 CLink4SEFile::~CLink4SEFile()
15 {
16 m_ofsFile.close();
17 }
18
19 bool CLink4SEFile::Write(void * arg)
20 {
21 if (!arg || !m_ofsFile) return false;
22
23 if (vsParsedLinks.size()==0) return false;
24
25 file_arg *pFile = (file_arg *)arg;
26
27 CUrl *iUrl = pFile->pUrl;
28 CPage *iPage = pFile->pPage;
29
30 char strDownloadTime[128];
31 time_t tDate;
32
33 memset(strDownloadTime, 0, 128);
34 time(&tDate);
35 strftime(strDownloadTime, 128, "%a, %d %b %Y %H:%M:%S GMT", gmtime(&tDate));
36
37 string links;
38 vector<string>::iterator it;
39 for (it=vsParsedLinks.begin(); it!=vsParsedLinks.end(); ++it)
40 {
41 links = links + *it + "\n";
42 }
43
44 m_ofsFile << "version: 1.0\n";
45 if( iPage->m_sLocation.length() == 0 ){
46 m_ofsFile << "url: " << iUrl->m_sUrl;
47 } else {
48 m_ofsFile << "url: " << iPage->m_sLocation;
49 m_ofsFile << "\norigin: " << iUrl->m_sUrl;
50 }
51
52 m_ofsFile << "\ndate: " << strDownloadTime;
53 if( mapCacheHostLookup.find(iUrl->m_sHost) == mapCacheHostLookup.end() ){
54 m_ofsFile << "\nip: " << iUrl->m_sHost;
55 } else {
56 m_ofsFile << "\nip: " << ( *(mapCacheHostLookup.find(iUrl->m_sHost)) ).second;
57 }
58
59 m_ofsFile << "\noutdegree: " << vsParsedLinks.size();
60 m_ofsFile << "\nlength: " << links.size() + iPage->m_nLenHeader + 1
61 << "\n\n" << iPage->m_sHeader << "\n";
62
63 m_ofsFile << links;
64 m_ofsFile << endl;
65
66 return true;
67 }