RESTinio
Loading...
Searching...
No Matches
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
16namespace restinio
17{
18
19namespace 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
31Accept-Encoding = #( codings [ weight ] )
32codings = content-coding / "identity" / "*"
33content-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 */
42{
43 struct item_t
44 {
45 std::string content_coding;
47 };
48
50
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
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]]
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 */
A class for holding the parsed value of qvalue from RFC7231.
Definition basics.hpp:136
Tools for working with the value of Accept-Encoding HTTP-field.
static auto make_parser()
A factory function for a parser of Accept-Encoding value.
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.