RESTinio
Namespaces | Classes | Enumerations | Functions
restinio::http_field_parsers::basic_auth Namespace Reference

Namespaces

namespace  impl
 

Classes

struct  params_t
 Parameters for basic authentification. More...
 

Enumerations

enum class  extraction_error_t {
  no_auth_http_field , illegal_http_field_value , not_basic_auth_scheme , invalid_basic_auth_param ,
  token68_decode_error , invalid_username_password_pair , empty_username
}
 Error codes for failures of extraction of basic authentification parameters. More...
 

Functions

RESTINIO_NODISCARD string_view_t to_string_view (extraction_error_t what) noexcept
 Helper function to get a string name of extraction_error enum. More...
 
RESTINIO_NODISCARD expected_t< params_t, extraction_error_ttry_extract_params (const authorization_value_t &http_field)
 Helper function for getting parameters of basic authentification from an already parsed HTTP-field. More...
 
RESTINIO_NODISCARD expected_t< params_t, extraction_error_ttry_extract_params (const http_header_fields_t &fields, string_view_t auth_field_name)
 Helper function for getting parameters of basic authentification from a set of HTTP-fields. More...
 
template<typename Extra_Data >
RESTINIO_NODISCARD expected_t< params_t, extraction_error_ttry_extract_params (const generic_request_t< Extra_Data > &req, string_view_t auth_field_name)
 Helper function for getting parameters of basic authentification from a request. More...
 
RESTINIO_NODISCARD expected_t< params_t, extraction_error_ttry_extract_params (const http_header_fields_t &fields, http_field_t auth_field_id)
 Helper function for getting parameters of basic authentification from a set of HTTP-fields. More...
 
template<typename Extra_Data >
RESTINIO_NODISCARD expected_t< params_t, extraction_error_ttry_extract_params (const generic_request_t< Extra_Data > &req, http_field_t auth_field_id)
 Helper function for getting parameters of basic authentification from a request. More...
 

Enumeration Type Documentation

◆ extraction_error_t

Error codes for failures of extraction of basic authentification parameters.

Since
v.0.6.7
Enumerator
no_auth_http_field 

There is no HTTP field with authentification parameters.

illegal_http_field_value 

The HTTP field with authentification parameters can't be parsed.

not_basic_auth_scheme 

Different authentification scheme found. Basic authentification scheme is expected.

invalid_basic_auth_param 

Invalid value of parameter for basic authentification scheme. The single parameter in the form of token68 is expected.

token68_decode_error 

Value of token68 parameter for basic authentification can't be decoded.

invalid_username_password_pair 

Wrong format for username:password in decoded token68 parameter. Maybe there is no colon symbol.

empty_username 

Empty user name in username:password pair.

Definition at line 65 of file basic_auth.hpp.

Function Documentation

◆ to_string_view()

RESTINIO_NODISCARD string_view_t restinio::http_field_parsers::basic_auth::to_string_view ( extraction_error_t  what)
inlinenoexcept

Helper function to get a string name of extraction_error enum.

Since
v.0.6.9

Definition at line 99 of file basic_auth.hpp.

◆ try_extract_params() [1/5]

RESTINIO_NODISCARD expected_t< params_t, extraction_error_t > restinio::http_field_parsers::basic_auth::try_extract_params ( const authorization_value_t http_field)
inline

Helper function for getting parameters of basic authentification from an already parsed HTTP-field.

Attention
This function doesn't check the content of authorization_value_t::auth_scheme. It's expected that this field was checked earlier.

Usage example:

auto on_request(restinio::request_handle_t & req) {
const auto opt_field = req.header().opt_value_of(
restinio::http_field::authorization);
if(opt_field) {
const auto parsed_field = authorization_value_t::try_parse(*opt_field);
if(parsed_field) {
if("basic" == parsed_field->auth_scheme) {
const auto basic_params = try_extract_params(*parsed_field);
if(basic_params) {
const std::string & username = auth_params->username;
const std::string & password = auth_params->password;
... // Do something with username and password.
}
}
else if("bearer" == parsed_field->auth_scheme) {
... // Dealing with bearer authentification.
}
else {
... // Other authentification schemes.
}
}
}
...
}
RESTINIO_NODISCARD expected_t< params_t, extraction_error_t > try_extract_params(const authorization_value_t &http_field)
Helper function for getting parameters of basic authentification from an already parsed HTTP-field.
Definition: basic_auth.hpp:183
std::shared_ptr< request_t > request_handle_t
An alias for handle for incoming request without additional extra-data.
static RESTINIO_NODISCARD expected_t< authorization_value_t, restinio::easy_parser::parse_error_t > try_parse(string_view_t what)
An attempt to parse Authorization HTTP-field.
Since
v.0.6.8
Examples
sample/chained_handlers/main.cpp, and sample/extra_data_factory/main.cpp.

Definition at line 183 of file basic_auth.hpp.

◆ try_extract_params() [2/5]

template<typename Extra_Data >
RESTINIO_NODISCARD expected_t< params_t, extraction_error_t > restinio::http_field_parsers::basic_auth::try_extract_params ( const generic_request_t< Extra_Data > &  req,
http_field_t  auth_field_id 
)
inline

Helper function for getting parameters of basic authentification from a request.

Usage example:

auto on_request(restinio::request_handle_t & req) {
const auto auth_params = try_extract_params(
*req, restinio::http_field::authorization);
if(auth_params) {
const std::string & username = auth_params->username;
const std::string & password = auth_params->password;
... // Do something with username and password.
}
...
}
Since
v.0.6.7
Parameters
reqA request that should hold a HTTP-field with authentification parameters.
auth_field_idThe ID of a HTTP-field with authentification parameters.

Definition at line 362 of file basic_auth.hpp.

◆ try_extract_params() [3/5]

template<typename Extra_Data >
RESTINIO_NODISCARD expected_t< params_t, extraction_error_t > restinio::http_field_parsers::basic_auth::try_extract_params ( const generic_request_t< Extra_Data > &  req,
string_view_t  auth_field_name 
)
inline

Helper function for getting parameters of basic authentification from a request.

This helper function is intended to be used for cases when authentification parameters are stored inside a HTTP-field with a custom name. For example:

auto on_request(restinio::request_handle_t & req) {
const auto auth_params = try_extract_params(*req, "X-My-Authorization");
if(auth_params) {
const std::string & username = auth_params->username;
const std::string & password = auth_params->password;
... // Do something with username and password.
}
...
}
Since
v.0.6.7
Parameters
reqA request that should hold a HTTP-field with authentification parameters.
auth_field_nameThe name of a HTTP-field with authentification parameters.

Definition at line 295 of file basic_auth.hpp.

◆ try_extract_params() [4/5]

RESTINIO_NODISCARD expected_t< params_t, extraction_error_t > restinio::http_field_parsers::basic_auth::try_extract_params ( const http_header_fields_t fields,
http_field_t  auth_field_id 
)
inline

Helper function for getting parameters of basic authentification from a set of HTTP-fields.

Usage example:

auto check_authorization(const restinio::http_header_fields_t & fields) {
const auto auth_params = try_extract_params(
fields, restinio::http_field::authorization);
if(auth_params) {
const std::string & username = auth_params->username;
const std::string & password = auth_params->password;
... // Do something with username and password.
}
...
}
Since
v.0.6.9
Parameters
fieldsA set of HTTP-fields.
auth_field_idThe ID of a HTTP-field with authentification parameters.

Definition at line 328 of file basic_auth.hpp.

◆ try_extract_params() [5/5]

RESTINIO_NODISCARD expected_t< params_t, extraction_error_t > restinio::http_field_parsers::basic_auth::try_extract_params ( const http_header_fields_t fields,
string_view_t  auth_field_name 
)
inline

Helper function for getting parameters of basic authentification from a set of HTTP-fields.

This helper function is intended to be used for cases when authentification parameters are stored inside a HTTP-field with a custom name. For example:

auto check_authorization(const restinio::http_header_fields_t & fields) {
const auto auth_params = try_extract_params(fields, "X-My-Authorization");
if(auth_params) {
const std::string & username = auth_params->username;
const std::string & password = auth_params->password;
... // Do something with username and password.
}
...
}
Since
v.0.6.9
Parameters
fieldsA set of HTTP-fields.
auth_field_nameThe name of a HTTP-field with authentification parameters.

Definition at line 261 of file basic_auth.hpp.