RESTinio
Loading...
Searching...
No Matches
restinio
helpers
http_field_parsers
accept-charset.hpp
Go to the documentation of this file.
1
/*
2
* RESTinio
3
*/
4
5
/*!
6
* @file
7
* @brief Stuff related to value of Accept-Charset HTTP-field.
8
*
9
* @since v.0.6.2
10
*/
11
12
#
pragma
once
13
14
#
include
<
restinio
/
helpers
/
http_field_parsers
/
basics
.
hpp
>
15
16
namespace
restinio
17
{
18
19
namespace
http_field_parsers
20
{
21
22
//
23
// accept_charset_value_t
24
//
25
/*!
26
* @brief Tools for working with the value of Accept-Charset HTTP-field.
27
*
28
* This struct represents parsed value of HTTP-field Accept-Charset
29
* (see https://tools.ietf.org/html/rfc7231#section-5.3.3):
30
@verbatim
31
Accept-Charset = 1#( ( charset / "*" ) [ weight ] )
32
charset = token
33
@endverbatim
34
*
35
* @note
36
* Values of `charset` are converted to lower case during the parsing.
37
*
38
* @since v.0.6.2
39
*/
40
struct
accept_charset_value_t
41
{
42
struct
item_t
43
{
44
std::string
charset
;
45
qvalue_t
weight
{
qvalue_t
::
maximum
};
46
};
47
48
using
item_container_t
=
std
::
vector
<
item_t
>;
49
50
item_container_t
charsets
;
51
52
/*!
53
* @brief A factory function for a parser of Accept-Charset value.
54
*
55
* @since v.0.6.2
56
*/
57
[[
nodiscard
]]
58
static
auto
59
make_parser
()
60
{
61
return
produce< accept_charset_value_t >(
62
non_empty_comma_separated_list_p< item_container_t >(
63
produce< item_t >(
64
token_p() >> to_lower() >> &item_t::charset,
65
maybe( weight_p() >> &item_t::weight )
66
)
67
) >> &accept_charset_value_t::charsets
68
);
69
}
70
71
/*!
72
* @brief An attempt to parse Accept-Charset HTTP-field.
73
*
74
* @since v.0.6.2
75
*/
76
[[
nodiscard
]]
77
static
expected_t
<
accept_charset_value_t
,
restinio
::
easy_parser
::
parse_error_t
>
78
try_parse
( string_view_t what )
79
{
80
return
restinio
::
easy_parser
::try_parse( what,
make_parser
(
)
);
81
}
82
};
83
84
}
/* namespace http_field_parsers */
85
86
}
/* namespace restinio */
restinio::http_field_parsers::qvalue_t
A class for holding the parsed value of qvalue from RFC7231.
Definition
basics.hpp:136
restinio::easy_parser
Definition
easy_parser.hpp:40
restinio::http_field_parsers
Definition
accept-charset.hpp:20
restinio
Definition
sendfile_operation_default.ipp:12
restinio::http_field_parsers::accept_charset_value_t::item_t
Definition
accept-charset.hpp:43
restinio::http_field_parsers::accept_charset_value_t::item_t::weight
qvalue_t weight
Definition
accept-charset.hpp:45
restinio::http_field_parsers::accept_charset_value_t::item_t::charset
std::string charset
Definition
accept-charset.hpp:44
restinio::http_field_parsers::accept_charset_value_t
Tools for working with the value of Accept-Charset HTTP-field.
Definition
accept-charset.hpp:41
restinio::http_field_parsers::accept_charset_value_t::try_parse
static expected_t< accept_charset_value_t, restinio::easy_parser::parse_error_t > try_parse(string_view_t what)
An attempt to parse Accept-Charset HTTP-field.
Definition
accept-charset.hpp:78
restinio::http_field_parsers::accept_charset_value_t::make_parser
static auto make_parser()
A factory function for a parser of Accept-Charset value.
Definition
accept-charset.hpp:59
restinio::http_field_parsers::accept_charset_value_t::charsets
item_container_t charsets
Definition
accept-charset.hpp:50
Generated by
1.14.0