RESTinio

accept-charset.hpp
Go to the documentation of this file.
1/*
2 * RESTinio
3 */
4
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//
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
57 RESTINIO_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
76 RESTINIO_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 */
87
basics.hpp
Utilities for parsing values of http-fields.
restinio::http_field_parsers::qvalue_t
A class for holding the parsed value of qvalue from RFC7231.
Definition: basics.hpp:136
restinio::http_field_parsers::qvalue_t::maximum
static constexpr qvalue_details::extremum_max_t maximum
The indicator that tells that new qvalue object should have the maximal allowed value.
Definition: basics.hpp:147
RESTINIO_NODISCARD
#define RESTINIO_NODISCARD
Definition: compiler_features.hpp:33
restinio::easy_parser::maybe
RESTINIO_NODISCARD auto maybe(Clauses &&... clauses)
A factory function to create an optional clause.
Definition: easy_parser.hpp:3634
restinio::easy_parser::try_parse
RESTINIO_NODISCARD expected_t< typename Producer::result_type, parse_error_t > try_parse(string_view_t from, Producer producer)
Perform the parsing of the specified content by using specified value producer.
Definition: easy_parser.hpp:5042
restinio::easy_parser::to_lower
RESTINIO_NODISCARD auto to_lower() noexcept
A factory function to create a to_lower_transformer.
Definition: easy_parser.hpp:4610
restinio::http_field_parsers::token_p
RESTINIO_NODISCARD auto token_p() noexcept
A factory function to create a token_producer.
Definition: basics.hpp:985
restinio::http_field_parsers::weight_p
RESTINIO_NODISCARD auto weight_p() noexcept
A factory function to create a producer for weight parameter.
Definition: basics.hpp:1277
restinio
Definition: asio_include.hpp:21
restinio::string_view_t
nonstd::string_view string_view_t
Definition: string_view.hpp:19
restinio::expected_t
nonstd::expected< T, E > expected_t
Definition: expected.hpp:22
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::make_parser
static RESTINIO_NODISCARD 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::item_container_t
std::vector< item_t > item_container_t
Definition: accept-charset.hpp:48
restinio::http_field_parsers::accept_charset_value_t::try_parse
static RESTINIO_NODISCARD 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::charsets
item_container_t charsets
Definition: accept-charset.hpp:50