RESTinio
Loading...
Searching...
No Matches
cache-control.hpp
Go to the documentation of this file.
1/*
2 * RESTinio
3 */
4
5/*!
6 * @file
7 * @brief Stuff related to value of Cache-Control HTTP-field.
8 *
9 * @since v.0.6.1
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// cache_control_value_t
24//
25/*!
26 * @brief Tools for working with the value of Cache-Control HTTP-field.
27 *
28 * This struct represents parsed value of HTTP-field Cache-Control
29 * (see https://tools.ietf.org/html/rfc7234#section-5.2):
30@verbatim
31 Cache-Control = 1#cache-directive
32
33 cache-directive = token [ "=" ( token / quoted-string ) ]
34@endverbatim
35 *
36 * @note
37 * Parameter names are converted to lower case during the parsing.
38 * Parameter values are left as they are.
39 *
40 * @since v.0.6.1
41 */
43{
45
47
49
50 /*!
51 * @brief A factory function for a parser of Cache-Control value.
52 *
53 * @since v.0.6.1
54 */
55 [[nodiscard]]
56 static auto
58 {
59 return produce< cache_control_value_t >(
60 non_empty_comma_separated_list_p< directive_container_t >(
61 produce< directive_t >(
62 token_p() >> to_lower() >> &directive_t::first,
63 maybe(
64 symbol('='),
65 alternatives(
66 token_p() >> &directive_t::second,
67 quoted_string_p() >> &directive_t::second
68 )
69 )
70 )
71 ) >> &cache_control_value_t::directives
72 );
73 }
74
75 /*!
76 * @brief An attempt to parse Cache-Control HTTP-field.
77 *
78 * @since v.0.6.1
79 */
80 [[nodiscard]]
82 try_parse( string_view_t what )
83 {
84 return restinio::easy_parser::try_parse( what, make_parser() );
85 }
86};
87
88} /* namespace http_field_parsers */
89
90} /* namespace restinio */
std::pair< std::string, std::optional< std::string > > parameter_with_optional_value_t
A type that describes a parameter with optional value.
Definition basics.hpp:1697
Tools for working with the value of Cache-Control HTTP-field.
static auto make_parser()
A factory function for a parser of Cache-Control value.
static expected_t< cache_control_value_t, restinio::easy_parser::parse_error_t > try_parse(string_view_t what)
An attempt to parse Cache-Control HTTP-field.