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