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

Method prepareRequest

Libraries/HttpClient/HttpClientSession.cpp:864–900  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

862}
863
864SC::Result SC::HttpClientSession::prepareRequest(const HttpClientRequest& source, HttpClientRequest& prepared)
865{
866 SC_TRY_MSG(initialized, "HttpClientSession: not initialized");
867 SC_TRY_MSG(source.headers.sizeInElements() <= sessionMemory.requestHeaders.sizeInElements(),
868 "HttpClientSession: request header capacity exhausted");
869
870 headerScratchUsed = 0;
871 size_t numHeaders = 0;
872 for (size_t idx = 0; idx < source.headers.sizeInElements(); ++idx)
873 {
874 sessionMemory.requestHeaders[numHeaders++] = source.headers[idx];
875 }
876
877 if (not sessionRequestHasHeader(source, StringSpan("Cookie")))
878 {
879 SC_TRY(appendMatchingCookies(source.url, numHeaders));
880 }
881
882 if (not sessionRequestHasHeader(source, StringSpan("Authorization")))
883 {
884 ParsedUrl parsed;
885 SC_TRY_MSG(parseUrl(source.url, parsed), "HttpClientSession: invalid request URL");
886 for (size_t idx = 0; idx < sessionMemory.authEntries.sizeInElements(); ++idx)
887 {
888 const HttpClientSessionAuthCacheEntry& entry = sessionMemory.authEntries[idx];
889 if (entry.isInUse() and sessionAsciiEqualsIgnoreCase(entry.origin, parsed.origin))
890 {
891 SC_TRY(appendPreparedHeader(StringSpan("Authorization"), entry.authorizationHeader, numHeaders));
892 break;
893 }
894 }
895 }
896
897 prepared = source;
898 prepared.headers = {sessionMemory.requestHeaders.data(), numHeaders};
899 return Result(true);
900}
901
902SC::Result SC::HttpClientSession::captureSetCookie(StringSpan requestUrl, StringSpan setCookie)
903{

Callers

nothing calls this directly

Calls 6

sessionRequestHasHeaderFunction · 0.85
StringSpanFunction · 0.85
parseUrlFunction · 0.85
ResultClass · 0.50
dataMethod · 0.45

Tested by

no test coverage detected