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

Function HttpParseBasicCredentials

Libraries/Http/HttpHeaders.cpp:576–602  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

574}
575
576bool HttpAuthorizationView::isBearer() const { return HttpHeaderInternal::equalsIgnoreCase(scheme, "Bearer"); }
577
578bool HttpAuthorizationView::isBasic() const { return HttpHeaderInternal::equalsIgnoreCase(scheme, "Basic"); }
579
580Result HttpParseBearerToken(StringSpan authorizationHeader, StringSpan& token)
581{
582 token = {};
583
584 HttpAuthorizationView authorization;
585 SC_TRY(authorization.parse(authorizationHeader));
586 if (not authorization.isBearer())
587 return Result::Error(HttpResultCategory, HttpError::AuthorizationNotBearer);
588 token = authorization.credentials;
589 return Result(true);
590}
591
592Result HttpParseBasicCredentials(StringSpan authorizationHeader, Span<char> storage, StringSpan& username,
593 StringSpan& password)
594{
595 username = {};
596 password = {};
597
598 HttpAuthorizationView authorization;
599 SC_TRY(authorization.parse(authorizationHeader));
600 if (not authorization.isBasic())
601 return Result::Error(HttpResultCategory, HttpError::AuthorizationNotBasic);
602
603 size_t decodedSize = 0;
604 SC_TRY(HttpHeaderInternal::decodeBase64(authorization.credentials, storage, decodedSize));
605 size_t colonIndex = static_cast<size_t>(-1);

Callers 2

authorizationHelpersMethod · 0.85
outputResetMethod · 0.85

Calls 4

isBasicMethod · 0.80
ResultClass · 0.50
parseMethod · 0.45
dataMethod · 0.45

Tested by 2

authorizationHelpersMethod · 0.68
outputResetMethod · 0.68