Add httpGet function

This commit is contained in:
Federico Cecchetto
2021-06-20 20:04:36 +02:00
parent e5083cd228
commit b1a29ded7d
11 changed files with 253 additions and 34 deletions

47
src/utils/http.cpp Normal file
View File

@ -0,0 +1,47 @@
#include <stdinc.hpp>
#include "http.hpp"
namespace utils::http
{
std::optional<std::string> get_data(const std::string& url)
{
CComPtr<IStream> stream;
if (FAILED(URLOpenBlockingStreamA(nullptr, url.data(), &stream, 0, nullptr)))
{
return {};
}
char buffer[0x1000];
std::string result;
HRESULT status{};
do
{
DWORD bytes_read = 0;
status = stream->Read(buffer, sizeof(buffer), &bytes_read);
if (bytes_read > 0)
{
result.append(buffer, bytes_read);
}
}
while (SUCCEEDED(status) && status != S_FALSE);
if (FAILED(status))
{
return {};
}
return {result};
}
std::future<std::optional<std::string>> get_data_async(const std::string& url)
{
return std::async(std::launch::async, [url]()
{
return get_data(url);
});
}
}