Create request handler.
| 6 | |
| 7 | // Create request handler. |
| 8 | restinio::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(); |
nothing calls this directly
no test coverage detected