#pragma once #include "util.h" #include using InternetHandle = AutoHandle>; inline std::optional ReceiveHttpRequest(HINTERNET request) { WinHttpReceiveResponse(request, NULL); std::string data; DWORD dwSize, dwDownloaded; do { dwSize = 0; WinHttpQueryDataAvailable(request, &dwSize); if (!dwSize) break; std::vector buffer(dwSize); WinHttpReadData(request, buffer.data(), dwSize, &dwDownloaded); data.append(buffer.data(), dwDownloaded); } while (dwSize > 0); if (data.empty()) return {}; return StringToWideString(data); } inline void Escape(std::wstring& text) { for (int i = 0; i < text.size(); ++i) { if (text[i] == L'\\') { text[i] = 0x200b; if (text[i + 1] == L'r') text[i + 1] = 0x200b; // for some reason \r gets displayed as a newline if (text[i + 1] == L'n') text[i + 1] = L'\n'; if (text[i + 1] == L't') text[i + 1] = L'\t'; } } }