void HandleStreamRequest(
for (const auto& header_name : request.GetHeaderNames()) {
const auto& header_value = request.
GetHeader(header_name);
headers[header_name] = header_value;
}
const auto& port = request.
GetArg(
"port");
auto url = fmt::format("http://localhost:{}/test", port);
const auto& timeout_string = request.
GetArg(
"timeout");
const auto timeout = timeout_string.empty()
? kDefaultTimeout
: std::chrono::seconds{std::stoi(timeout_string)};
const auto retries = 1;
auto external_request = http_client_.CreateRequest()
.get(url)
.headers(std::move(headers))
.timeout(timeout)
.retry(retries);
auto client_response =
external_request.async_perform_stream_body(std::move(queue));
for (const auto& header_item : client_response.GetHeaders()) {
const auto& header_name = header_item.first;
const auto& header_value = header_item.second;
response_body_stream.SetHeader(header_name, header_value);
}
auto status_code = client_response.StatusCode();
response_body_stream.SetStatusCode(status_code);
response_body_stream.SetHeader(std::string{"abc"}, std::string{"def"});
response_body_stream.SetEndOfHeaders();
TESTPOINT(
"stream_after_set_end_of_headers", {});
std::string body_part;
while (client_response.ReadChunk(body_part, deadline)) {
response_body_stream.PushBodyChunk(std::move(body_part),
TESTPOINT(
"stream_after_push_body_chunk", {});
}
}