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 |
