Mercurial > mercurial > hgweb_golang.cgi
diff src/kaigo/horori/searcher/include/net.h @ 45:20b42e2deae1
add alloc, (new)mover, merger & (new)searcher.
author | pyon@macmini |
---|---|
date | Thu, 16 Apr 2020 20:59:35 +0900 |
parents | |
children | 169936fed61b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/kaigo/horori/searcher/include/net.h Thu Apr 16 20:59:35 2020 +0900 @@ -0,0 +1,82 @@ +// Filename : net.h +// Last Change: 2020-03-30 ŒŽ 15:05:58. +// +#pragma once + +#include <wx/sstream.h> +#include <wx/wfstream.h> +#include <wx/zstream.h> +#include <wx/tarstrm.h> +#include <wx/protocol/http.h> + +wxString HttpGetText(wxString addr, wxString port, wxString url) +{ + wxHTTP get; + get.SetFlags(wxSOCKET_WAITALL|wxSOCKET_BLOCK); + while (!get.Connect(addr, wxAtoi(port))) + wxSleep(1); + + wxString res; + wxInputStream *httpStream = get.GetInputStream(url); + if (get.GetError() == wxPROTO_NOERR) { + wxStringOutputStream out_stream(&res); + httpStream->Read(out_stream); + } + + wxDELETE(httpStream); + get.Close(); + + return res; +}; + +bool HttpGetFile(wxString addr, wxString port, wxString url, wxString file) +{ + bool ret = false; + wxHTTP get; + get.SetFlags(wxSOCKET_WAITALL|wxSOCKET_BLOCK); + while (!get.Connect(addr, wxAtoi(port))) + wxSleep(1); + + wxInputStream *httpStream = get.GetInputStream(url); + if (get.GetError() == wxPROTO_NOERR) { + wxFileOutputStream out_stream(file); + httpStream->Read(out_stream); + ret = true; + } + + wxDELETE(httpStream); + get.Close(); + return ret; +}; + +bool HttpGetTgzFile(wxString addr, wxString port, wxString url, wxString dir) +{ + bool ret = false; + wxHTTP get; + get.SetTimeout(30); + get.SetFlags(wxSOCKET_WAITALL|wxSOCKET_BLOCK); + while (!get.Connect(addr, wxAtoi(port))) + wxSleep(1); + + wxInputStream *httpStream = get.GetInputStream(url); + if (get.GetError() == wxPROTO_NOERR) { + //int size = httpStream->GetSize(); + wxZlibInputStream zlib_istream(httpStream); + + wxTarEntry* entry; + wxTarInputStream tar_istream(zlib_istream); + int i = 1; + while ((entry = tar_istream.GetNextEntry()) != NULL) { + //wxString name = entry->GetName(); + wxFileOutputStream file_ostream(wxString::Format(wxT("%s/%d"), dir, i++)); + file_ostream.Write(tar_istream); + file_ostream.Close(); + } + ret = true; + } + + //wxDELETE(httpStream); + get.Close(); + return ret; +}; +