RESTinio
Loading...
Searching...
No Matches
restinio
helpers
http_field_parsers
accept-encoding.hpp
Go to the documentation of this file.
1
/*
2
* RESTinio
3
*/
4
5
/*!
6
* @file
7
* @brief Stuff related to value of Accept-Encoding 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_encoding_value_t
24
//
25
/*!
26
* @brief Tools for working with the value of Accept-Encoding HTTP-field.
27
*
28
* This struct represents parsed value of HTTP-field Accept-Encoding
29
* (see https://tools.ietf.org/html/rfc7231#section-5.3.4):
30
@verbatim
31
Accept-Encoding = #( codings [ weight ] )
32
codings = content-coding / "identity" / "*"
33
content-coding = token
34
@endverbatim
35
*
36
* @note
37
* Values of `condings` are converted to lower case during the parsing.
38
*
39
* @since v.0.6.2
40
*/
41
struct
accept_encoding_value_t
42
{
43
struct
item_t
44
{
45
std::string
content_coding
;
46
qvalue_t
weight
{
qvalue_t
::
maximum
};
47
};
48
49
using
item_container_t
=
std
::
vector
<
item_t
>;
50
51
item_container_t
codings
;
52
53
/*!
54
* @brief A factory function for a parser of Accept-Encoding value.
55
*
56
* @since v.0.6.2
57
*/
58
[[
nodiscard
]]
59
static
auto
60
make_parser
()
61
{
62
return
produce< accept_encoding_value_t >(
63
maybe_empty_comma_separated_list_p< item_container_t >(
64
produce< item_t >(
65
token_p() >> to_lower() >> &item_t::content_coding,
66
maybe( weight_p() >> &item_t::weight )
67
)
68
) >> &accept_encoding_value_t::codings
69
);
70
}
71
72
/*!
73
* @brief An attempt to parse Accept-Encoding HTTP-field.
74
*
75
* @since v.0.6.2
76
*/
77
[[
nodiscard
]]
78
static
expected_t
<
accept_encoding_value_t
,
restinio
::
easy_parser
::
parse_error_t
>
79
try_parse
( string_view_t what )
80
{
81
return
restinio
::
easy_parser
::try_parse( what,
make_parser
(
)
);
82
}
83
};
84
85
}
/* namespace http_field_parsers */
86
87
}
/* 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_encoding_value_t::item_t
Definition
accept-encoding.hpp:44
restinio::http_field_parsers::accept_encoding_value_t::item_t::content_coding
std::string content_coding
Definition
accept-encoding.hpp:45
restinio::http_field_parsers::accept_encoding_value_t::item_t::weight
qvalue_t weight
Definition
accept-encoding.hpp:46
restinio::http_field_parsers::accept_encoding_value_t
Tools for working with the value of Accept-Encoding HTTP-field.
Definition
accept-encoding.hpp:42
restinio::http_field_parsers::accept_encoding_value_t::make_parser
static auto make_parser()
A factory function for a parser of Accept-Encoding value.
Definition
accept-encoding.hpp:60
restinio::http_field_parsers::accept_encoding_value_t::try_parse
static expected_t< accept_encoding_value_t, restinio::easy_parser::parse_error_t > try_parse(string_view_t what)
An attempt to parse Accept-Encoding HTTP-field.
Definition
accept-encoding.hpp:79
restinio::http_field_parsers::accept_encoding_value_t::codings
item_container_t codings
Definition
accept-encoding.hpp:51
Generated by
1.14.0