Mercurial > mercurial > hgweb_kaigo.hg.cgi
comparison horori/searcher/include/net.h @ 0:aaaa401818a1 draft
first commit.
author | pyon <pyon@macmini> |
---|---|
date | Mon, 24 May 2021 21:32:58 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:aaaa401818a1 |
---|---|
1 // Filename : net.h | |
2 // Last Change: 2020-05-01 ‹à 08:47:39. | |
3 // | |
4 #pragma once | |
5 | |
6 #include <wx/sstream.h> | |
7 #include <wx/wfstream.h> | |
8 #include <wx/zstream.h> | |
9 #include <wx/tarstrm.h> | |
10 #include <wx/protocol/http.h> | |
11 | |
12 wxString HttpGetText(wxString addr, wxString port, wxString url) | |
13 { | |
14 wxHTTP get; | |
15 get.SetFlags(wxSOCKET_WAITALL|wxSOCKET_BLOCK); | |
16 while (!get.Connect(addr, wxAtoi(port))) | |
17 wxSleep(1); | |
18 | |
19 wxString res; | |
20 wxInputStream *httpStream = get.GetInputStream(url); | |
21 if (get.GetError() == wxPROTO_NOERR) { | |
22 wxStringOutputStream out_stream(&res); | |
23 httpStream->Read(out_stream); | |
24 } | |
25 | |
26 wxDELETE(httpStream); | |
27 get.Close(); | |
28 | |
29 return res; | |
30 }; | |
31 | |
32 bool HttpGetFile(wxString addr, wxString port, wxString url, wxString file) | |
33 { | |
34 bool ret = false; | |
35 wxHTTP get; | |
36 get.SetFlags(wxSOCKET_WAITALL|wxSOCKET_BLOCK); | |
37 while (!get.Connect(addr, wxAtoi(port))) | |
38 wxSleep(1); | |
39 | |
40 wxInputStream *httpStream = get.GetInputStream(url); | |
41 if (get.GetError() == wxPROTO_NOERR) { | |
42 wxFileOutputStream out_stream(file); | |
43 httpStream->Read(out_stream); | |
44 ret = true; | |
45 } | |
46 | |
47 wxDELETE(httpStream); | |
48 get.Close(); | |
49 return ret; | |
50 }; | |
51 | |
52 bool HttpGetTgzFile(wxString addr, wxString port, wxString url, wxString dir) | |
53 { | |
54 bool ret = false; | |
55 wxHTTP get; | |
56 get.SetTimeout(30); | |
57 get.SetFlags(wxSOCKET_WAITALL|wxSOCKET_BLOCK); | |
58 while (!get.Connect(addr, wxAtoi(port))) | |
59 wxSleep(1); | |
60 | |
61 wxInputStream *httpStream = get.GetInputStream(url); | |
62 if (get.GetError() == wxPROTO_NOERR) { | |
63 //int size = httpStream->GetSize(); | |
64 wxZlibInputStream zlib_istream(httpStream); | |
65 | |
66 wxTarEntry* entry; | |
67 wxTarInputStream tar_istream(zlib_istream); | |
68 int i = 1; | |
69 while ((entry = tar_istream.GetNextEntry()) != NULL) { | |
70 //wxString name = entry->GetName(); | |
71 wxFileOutputStream file_ostream(wxString::Format(wxT("%s/%d"), dir, i++)); | |
72 file_ostream.Write(tar_istream); | |
73 file_ostream.Close(); | |
74 } | |
75 ret = true; | |
76 //wxDELETE(httpStream); | |
77 } | |
78 | |
79 get.Close(); | |
80 return ret; | |
81 }; | |
82 | |
83 bool HttpPostFile(wxString addr, wxString port, wxString url, wxString file) | |
84 { | |
85 bool ret = false; | |
86 | |
87 wxMemoryBuffer buf; | |
88 wxByte b[8192]; | |
89 wxFFile f; | |
90 if (!f.Open(file, wxT("rb"))) { | |
91 wxMessageBox(wxT("Cannot open file.")); | |
92 return ret; | |
93 } | |
94 for (;;) { | |
95 size_t len = f.Read(b, sizeof(b)); | |
96 if ((size_t)wxInvalidOffset == len) { | |
97 return ret; | |
98 } | |
99 if (len == 0) break; // success | |
100 buf.AppendData(b, len); | |
101 } | |
102 f.Close(); | |
103 | |
104 wxHTTP post; | |
105 post.SetTimeout(30); | |
106 post.SetFlags(wxSOCKET_WAITALL|wxSOCKET_BLOCK); | |
107 post.SetPostBuffer(wxT("application/gzip"), buf); | |
108 | |
109 while (!post.Connect(addr, wxAtoi(port))) | |
110 wxSleep(1); | |
111 | |
112 wxInputStream *httpStream = post.GetInputStream(url); | |
113 if (httpStream != NULL) { | |
114 wxString res; | |
115 wxStringOutputStream out_stream(&res); | |
116 httpStream->Read(out_stream); | |
117 wxDELETE(httpStream); | |
118 //wxMessageBox(res); | |
119 ret = true; | |
120 } | |
121 | |
122 post.Close(); | |
123 return ret; | |
124 }; | |
125 |