Mercurial > mercurial > hgweb_rsearcher.cgi
comparison src/net.cpp @ 8:82f9af6aa7e4
add net.cpp
author | pyon@macmini |
---|---|
date | Tue, 30 Oct 2018 17:26:02 +0900 |
parents | |
children | ae89ce4793d8 |
comparison
equal
deleted
inserted
replaced
7:29829e98d510 | 8:82f9af6aa7e4 |
---|---|
1 // Filename : net.cpp | |
2 // Last Change: 2018-10-30 火 11:08:25. | |
3 // | |
4 | |
5 #include <wx/datetime.h> | |
6 #include <wx/stream.h> | |
7 #include <wx/zstream.h> | |
8 #include <wx/tarstrm.h> | |
9 #include <wx/mstream.h> | |
10 #include "net.h" | |
11 | |
12 RsHttp::RsHttp() | |
13 { | |
14 } | |
15 | |
16 RsHttp::~RsHttp() | |
17 { | |
18 } | |
19 | |
20 void RsHttp::Get( wxString url, wxString file ) | |
21 { | |
22 wxHTTP get; | |
23 while ( !get.Connect( m_server, m_port ) ) | |
24 wxSleep( 1 ); | |
25 | |
26 wxInputStream *httpStream = get.GetInputStream( url ); | |
27 if ( get.GetError() == wxPROTO_NOERR ) { | |
28 wxFileOutputStream out_stream( file ); | |
29 httpStream->Read( out_stream ); | |
30 } else { | |
31 wxMessageBox( wxT( "Re:Searcher Error: get err" ) ); | |
32 } | |
33 | |
34 wxDELETE( httpStream ); | |
35 get.Close(); | |
36 } | |
37 | |
38 void RsHttp::GetDB( void ) | |
39 { | |
40 Get( wxT( "/db/auth.db"), wxT( "auth.db") ); | |
41 Get( wxT( "/db/hhs.db"), wxT( "hhs.db") ); | |
42 wxDateTime now = wxDateTime::Now(); | |
43 if ( now.GetDay() % 14 == 0 ) | |
44 Get( wxT( "/db/index.db"), wxT( "index.db" ) ); | |
45 } | |
46 | |
47 int RsHttp::GetImagesSize( wxString hhs, wxString date ) | |
48 { | |
49 wxHTTP get; | |
50 while ( !get.Connect( m_server, m_port ) ) | |
51 wxSleep( 1 ); | |
52 | |
53 wxString url = wxT( "/images/" ) + date + wxT( "/" ) + hhs + wxT( ".tgz" ); | |
54 | |
55 int size = -1; | |
56 wxInputStream *http_istream = get.GetInputStream( url ); | |
57 if ( get.GetError() == wxPROTO_NOERR ) { | |
58 size = http_istream->GetSize(); | |
59 } else { | |
60 wxMessageBox( wxT( "Re:Searcher Error: Cannot get file size." ) ); | |
61 } | |
62 | |
63 wxDELETE( http_istream ); | |
64 get.Close(); | |
65 return size; | |
66 } | |
67 | |
68 void RsHttp::GetImages( wxString hhs, wxString date ) | |
69 { | |
70 wxHTTP get; | |
71 get.SetTimeout( 30 ); | |
72 get.SetFlags( wxSOCKET_WAITALL|wxSOCKET_BLOCK ); | |
73 while ( !get.Connect( m_server, m_port ) ) | |
74 wxSleep( 1 ); | |
75 | |
76 wxString url = wxT( "/images/" ) + date + wxT( "/" ) + hhs + wxT( ".tgz" ); | |
77 | |
78 wxInputStream *http_istream = get.GetInputStream( url ); | |
79 if ( get.GetError() == wxPROTO_NOERR ) { | |
80 //int size = http_istream->GetSize(); | |
81 wxZlibInputStream zlib_istream( http_istream ); // 0: no cache : bad | |
82 | |
83 /* | |
84 wxMemoryOutputStream mm_ostream; // 1: ok | |
85 http_istream->Read( mm_ostream ); | |
86 wxMemoryInputStream mm_istream( mm_ostream ); | |
87 wxZlibInputStream zlib_istream( mm_istream ); | |
88 */ | |
89 | |
90 wxTarEntry* entry; | |
91 wxTarInputStream tar_istream( zlib_istream ); | |
92 int i = 1; | |
93 while ( ( entry = tar_istream.GetNextEntry() ) != NULL ) { | |
94 //wxString name = entry->GetName(); | |
95 wxFileOutputStream file_ostream( wxString::Format( wxT( ".cache/%s_%d" ), date, i++ ) ); | |
96 file_ostream.Write( tar_istream ); | |
97 file_ostream.Close(); | |
98 } | |
99 } else { | |
100 wxMessageBox( wxT( "Re:Searcher Error: get err" ) ); | |
101 } | |
102 | |
103 //wxDELETE( http_istream ); | |
104 get.Close(); | |
105 } | |
106 |