27 namespace http_field_parsers
71 illegal_http_field_value,
75 not_basic_auth_scheme,
79 invalid_basic_auth_param,
86 invalid_username_password_pair,
105 case extraction_error_t::no_auth_http_field:
109 case extraction_error_t::illegal_http_field_value:
113 case extraction_error_t::not_basic_auth_scheme:
117 case extraction_error_t::invalid_basic_auth_param:
121 case extraction_error_t::token68_decode_error:
125 case extraction_error_t::invalid_username_password_pair:
186 const auto * token68 = get_if<authorization_value_t::token68_t>(
189 return make_unexpected( extraction_error_t::invalid_basic_auth_param );
191 const auto unbase64_result =
193 if( !unbase64_result )
194 return make_unexpected( extraction_error_t::token68_decode_error );
196 const std::string & username_password = *unbase64_result;
197 const auto first_colon = username_password.find(
':' );
198 if( std::string::npos == first_colon )
199 return make_unexpected(
200 extraction_error_t::invalid_username_password_pair );
201 if( 0u == first_colon )
205 username_password.substr( 0u, first_colon ),
206 username_password.substr( first_colon + 1u )
218 if( !opt_field_value )
219 return make_unexpected( extraction_error_t::no_auth_http_field );
223 if( !field_value_parse_result )
224 return make_unexpected( extraction_error_t::illegal_http_field_value );
226 const auto & parsed_value = *field_value_parse_result;
227 if(
"basic" != parsed_value.auth_scheme )
228 return make_unexpected( extraction_error_t::not_basic_auth_scheme );