| 394 | SC_TRY_MSG(addedResponseData, "HttpAsyncClient failed to register response listener"); |
| 395 | if (connection->getReadableTransportStream().canStart()) |
| 396 | { |
| 397 | SC_TRY(connection->getReadableTransportStream().start()); |
| 398 | } |
| 399 | else |
| 400 | { |
| 401 | connection->getReadableTransportStream().resumeReading(); |
| 402 | } |
| 403 | state = State::Sending; |
| 404 | return Result(true); |
| 405 | } |
| 406 | |
| 407 | Result HttpAsyncClient::beginRequestSend() |
| 408 | { |
| 409 | request.setWritableStream(connection->getWritableTransportStream()); |
| 410 | request.setHeaderMemory(connection->getHeaderMemory()); |
| 411 | request.reset(); |
| 412 | request.setKeepAlive(currentPreset.keepAlive); |
| 413 | request.setDefaultHost(currentURL.host); |
| 414 | request.internalHeadersSentCallback = {[this](AsyncBufferView::ID bufferID) { onHeadersBufferWritten(bufferID); }}; |
| 415 | |
| 416 | SC_TRY(request.startRequest(currentPreset.method, currentURL.path)); |
| 417 | |
| 418 | switch (currentPreset.bodyMode) |
| 419 | { |
| 420 | case RequestPreset::BodyMode::None: break; |
| 421 | case RequestPreset::BodyMode::Span: SC_TRY(request.setBody(currentPreset.bodySpan)); break; |
| 422 | case RequestPreset::BodyMode::Stream: |
| 423 | SC_TRY_MSG(currentPreset.bodyStream != nullptr, "HttpAsyncClient body stream missing"); |
| 424 | request.setBody(*currentPreset.bodyStream, currentPreset.contentLength); |
| 425 | break; |
| 426 | case RequestPreset::BodyMode::Multipart: |
| 427 | SC_TRY_MSG(currentPreset.multipartWriter != nullptr, "HttpAsyncClient multipart writer missing"); |
| 428 | request.setMultipart(*currentPreset.multipartWriter); |
| 429 | break; |
| 430 | } |
| 431 | |
| 432 | for (const Header& header : currentPreset.headers) |
| 433 | { |
| 434 | SC_TRY(request.addHeader(header.name, header.value)); |
| 435 | } |
| 436 | |
| 437 | if (responseDecoder != nullptr and not request.hasAcceptEncodingHeader()) |
| 438 | { |
| 439 | SC_TRY(request.addHeader("Accept-Encoding", "gzip, deflate")); |
| 440 | } |
| 441 | |
| 442 | if (onPrepareRequest.isValid()) |
| 443 | { |
| 444 | onPrepareRequest(request); |
| 445 | } |
| 446 | |
| 447 | SC_TRY(validateActiveRequest()); |
| 448 | |
| 449 | if (currentPreset.autoSend) |
| 450 | { |
| 451 | if (not request.hasSentHeaders()) |
| 452 | { |
| 453 | SC_TRY(request.sendHeaders()); |
nothing calls this directly
no test coverage detected