MCPcopy Create free account
hub / github.com/Pagghiu/SaneCppLibraries / beginRequestSend

Method beginRequestSend

Libraries/Http/HttpAsyncClient.cpp:396–456  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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
407Result 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());

Callers

nothing calls this directly

Calls 11

setHeaderMemoryMethod · 0.80
setKeepAliveMethod · 0.80
setBodyMethod · 0.80
setMultipartMethod · 0.80
sendHeadersMethod · 0.80
ResultClass · 0.50
resetMethod · 0.45
startRequestMethod · 0.45
addHeaderMethod · 0.45
isValidMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected