MCPcopy Create free account
hub / github.com/Artikash/Textractor / HttpRequest

Method HttpRequest

extensions/network.cpp:3–49  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1#include "network.h"
2
3HttpRequest::HttpRequest(
4 const wchar_t* agentName,
5 const wchar_t* serverName,
6 const wchar_t* action,
7 const wchar_t* objectName,
8 std::string body,
9 const wchar_t* headers,
10 DWORD port,
11 const wchar_t* referrer,
12 DWORD requestFlags,
13 const wchar_t* httpVersion,
14 const wchar_t** acceptTypes
15)
16{
17 static std::atomic<HINTERNET> internet = NULL;
18 if (!internet) internet = WinHttpOpen(agentName, WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, NULL, NULL, 0);
19 if (internet)
20 if (InternetHandle connection = WinHttpConnect(internet, serverName, port, 0))
21 if (InternetHandle request = WinHttpOpenRequest(connection, action, objectName, httpVersion, referrer, acceptTypes, requestFlags))
22 if (WinHttpSendRequest(request, headers, -1UL, body.empty() ? NULL : body.data(), body.size(), body.size(), NULL))
23 {
24 WinHttpReceiveResponse(request, NULL);
25
26 //DWORD size = 0;
27 //WinHttpQueryHeaders(request, WINHTTP_QUERY_RAW_HEADERS_CRLF, WINHTTP_HEADER_NAME_BY_INDEX, NULL, &size, WINHTTP_NO_HEADER_INDEX);
28 //this->headers.resize(size);
29 //WinHttpQueryHeaders(request, WINHTTP_QUERY_RAW_HEADERS_CRLF, WINHTTP_HEADER_NAME_BY_INDEX, this->headers.data(), &size, WINHTTP_NO_HEADER_INDEX);
30 std::string data;
31 DWORD availableSize, downloadedSize;
32 do
33 {
34 availableSize = 0;
35 WinHttpQueryDataAvailable(request, &availableSize);
36 if (!availableSize) break;
37 std::vector<char> buffer(availableSize);
38 WinHttpReadData(request, buffer.data(), availableSize, &downloadedSize);
39 data.append(buffer.data(), downloadedSize);
40 } while (availableSize > 0);
41 response = StringToWideString(data);
42 this->connection = std::move(connection);
43 this->request = std::move(request);
44 }
45 else errorCode = GetLastError();
46 else errorCode = GetLastError();
47 else errorCode = GetLastError();
48 else errorCode = GetLastError();
49}
50
51std::wstring Escape(const std::wstring& text)
52{

Callers

nothing calls this directly

Calls 1

StringToWideStringFunction · 0.85

Tested by

no test coverage detected