| 1771 | }; |
| 1772 | |
| 1773 | Array<String> WinHTTPQueryAllHeaderStrings(HINTERNET hRequest, DWORD dwInfoLevel, LPCWSTR pwszName = WINHTTP_HEADER_NAME_BY_INDEX) |
| 1774 | { |
| 1775 | Array<String> result; |
| 1776 | DWORD nextIndex = 0; |
| 1777 | do { |
| 1778 | DWORD bufferLen = 0; |
| 1779 | DWORD currentIndex = nextIndex; |
| 1780 | WinHTTP::WinHttpQueryHeaders(hRequest, dwInfoLevel, pwszName, nullptr, &bufferLen, &nextIndex); |
| 1781 | if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) { |
| 1782 | if (bufferLen == 0 || (bufferLen % sizeof(wchar_t)) != 0) { |
| 1783 | return {}; |
| 1784 | } |
| 1785 | |
| 1786 | SmallVector<wchar_t, 1000> resBuf(bufferLen / sizeof(wchar_t)); |
| 1787 | if (WinHTTP::WinHttpQueryHeaders(hRequest, dwInfoLevel, pwszName, resBuf.data(), &bufferLen, &nextIndex)) { |
| 1788 | arrayAppend(result, Utf8::FromUtf16(resBuf.data(), bufferLen)); |
| 1789 | } |
| 1790 | } |
| 1791 | |
| 1792 | if (nextIndex <= currentIndex) { |
| 1793 | break; |
| 1794 | } |
| 1795 | } while (::GetLastError() != ERROR_WINHTTP_HEADER_NOT_FOUND); |
| 1796 | |
| 1797 | return result; |
| 1798 | } |
| 1799 | |
| 1800 | String WinHTTPQueryHeaderString(HINTERNET hRequest, DWORD dwInfoLevel, LPCWSTR pwszName = WINHTTP_HEADER_NAME_BY_INDEX) |
| 1801 | { |
no test coverage detected