src/rfc/upgrade_rule.cpp

93.3% Lines (14/15) 100.0% List of functions (1/1)
upgrade_rule.cpp
f(x) Functions (1)
Line TLA Hits Source Code
1 //
2 // Copyright (c) 2021 Vinnie Falco (vinnie.falco@gmail.com)
3 //
4 // Distributed under the Boost Software License, Version 1.0. (See accompanying
5 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 //
7 // Official repository: https://github.com/cppalliance/http
8 //
9
10 #include <boost/http/rfc/upgrade_rule.hpp>
11 #include <boost/http/rfc/token_rule.hpp>
12 #include <boost/url/grammar/error.hpp>
13 #include <boost/url/grammar/parse.hpp>
14
15 namespace boost {
16 namespace http {
17 namespace implementation_defined {
18
19 auto
20 47x upgrade_protocol_rule_t::
21 parse(
22 char const*& it,
23 char const* end) const noexcept ->
24 system::result<value_type>
25 {
26 47x value_type t;
27 // token
28 {
29 47x auto rv = grammar::parse(
30 it, end, token_rule);
31 47x if(! rv)
32 4x return rv.error();
33 43x t.name = *rv;
34 }
35 // [ "/" token ]
36 43x if( it == end ||
37 11x *it != '/')
38 33x return t;
39 10x ++it;
40 10x auto rv = grammar::parse(
41 it, end, token_rule);
42 10x if(! rv)
43 return rv.error();
44 10x t.version = *rv;
45 10x return t;
46 }
47
48 } // implementation_defined
49 } // http
50 } // boost
51