MCPcopy Create free account
hub / github.com/Stiffstream/restinio / handler

Function handler

dev/sample/query_string_params/main.cpp:8–69  ·  view source on GitHub ↗

Create request handler.

Source from the content-addressed store, hash-verified

6
7// Create request handler.
8restinio::request_handling_status_t handler( const restinio::request_handle_t& req )
9{
10 if( restinio::http_method_get() == req->header().method() )
11 {
12 fmt::basic_memory_buffer< char, 1u > response_body;
13 auto response_body_inserter = std::back_inserter( response_body );
14
15 fmt::format_to( response_body_inserter,
16 RESTINIO_FMT_FORMAT_STRING( "GET request to '{}'\n" ),
17 req->header().request_target() );
18
19 // Request header fields.
20 fmt::format_to( response_body_inserter,
21 RESTINIO_FMT_FORMAT_STRING( "HTTP-fields ({}):\n" ),
22 req->header().fields_count() );
23 for( const auto & f : req->header() )
24 {
25 fmt::format_to( response_body_inserter,
26 RESTINIO_FMT_FORMAT_STRING( "{}: {}\n" ),
27 f.name(), f.value() );
28 }
29
30 // Query params.
31 const auto qp = restinio::parse_query( req->header().query() );
32
33 if( qp.empty() )
34 {
35 fmt::format_to( response_body_inserter,
36 RESTINIO_FMT_FORMAT_STRING( "No query parameters." ) );
37 }
38 else
39 {
40 fmt::format_to( response_body_inserter,
41 RESTINIO_FMT_FORMAT_STRING( "Query params ({}):\n" ), qp.size() );
42
43 for( const auto & p : qp )
44 {
45 fmt::format_to( response_body_inserter,
46 RESTINIO_FMT_FORMAT_STRING( "'{}' => '{}'\n" ),
47 restinio::fmtlib_tools::streamed( p.first ),
48 restinio::fmtlib_tools::streamed( p.second ) );
49 }
50 }
51
52 if( qp.has( "debug" ) && qp[ "debug" ] == "true" )
53 {
54 std::cout.write( response_body.data(), response_body.size() );
55 std::cout << std::flush;
56 }
57
58 req->create_response()
59 .append_header( restinio::http_field::server, "RESTinio query string params server" )
60 .append_header_date_field()
61 .append_header( restinio::http_field::content_type, "text/plain; charset=utf-8" )
62 .set_body( std::move(response_body) )
63 .done();
64
65 return restinio::request_accepted();

Callers

nothing calls this directly

Calls 15

parse_queryFunction · 0.85
streamedFunction · 0.85
request_acceptedFunction · 0.85
request_rejectedFunction · 0.85
methodMethod · 0.80
request_targetMethod · 0.80
fields_countMethod · 0.80
nameMethod · 0.80
queryMethod · 0.80
writeMethod · 0.80
create_responseMethod · 0.80
valueMethod · 0.45

Tested by

no test coverage detected