RESTinio
Loading...
Searching...
No Matches
http_headers.hpp File Reference
#include <restinio/impl/include_fmtlib.hpp>
#include <restinio/impl/string_caseless_compare.hpp>
#include <restinio/exception.hpp>
#include <restinio/string_view.hpp>
#include <restinio/common_types.hpp>
#include <llhttp.h>
#include <iosfwd>
#include <ostream>
#include <string>
#include <vector>
#include <algorithm>
#include <optional>

Go to the source code of this file.

Classes

class  restinio::http_header_field_t
 A single header field. More...
class  restinio::http_header_fields_t
 Header fields map. More...
struct  restinio::http_header_common_t
 Req/Resp headers common data. More...
class  restinio::http_method_id_t
 A type for representation of HTTP method ID. More...
class  restinio::default_http_methods_t
 The default implementation for http_method_mapper. More...
struct  restinio::http_request_header_t
 Req header. More...
class  restinio::http_status_code_t
 A handy wrapper for HTTP response status code. More...
class  restinio::http_status_line_t
 HTTP response header status line. More...
struct  restinio::http_response_header_t
 Resp header. More...

Namespaces

namespace  restinio
namespace  restinio::impl
namespace  restinio::status_code

Macros

#define RESTINIO_HTTP_FIELDS_MAP(RESTINIO_GEN)
#define RESTINIO_HTTP_FIELD_GEN(name, ignored)
#define RESTINIO_HTTP_CHECK_FOR_FIELD(field_id, candidate_field_name)
#define RESTINIO_HTTP_FIELD_STR_GEN(name, string_name)

Typedefs

using restinio::http_field = http_field_t
 Helper alies to omitt _t suffix.

Enumerations

enum class  restinio::http_field_t : std::uint8_t { restinio::field_unspecified }
 C++ enum that repeats nodejs c-style enum. More...

Functions

void restinio::impl::append_last_field_accessor (http_header_fields_t &, string_view_t)
RFC 2616 statuses.
http_status_line_t restinio::status_continue ()
http_status_line_t restinio::status_switching_protocols ()
http_status_line_t restinio::status_ok ()
http_status_line_t restinio::status_created ()
http_status_line_t restinio::status_accepted ()
http_status_line_t restinio::status_non_authoritative_information ()
http_status_line_t restinio::status_no_content ()
http_status_line_t restinio::status_reset_content ()
http_status_line_t restinio::status_partial_content ()
http_status_line_t restinio::status_multiple_choices ()
http_status_line_t restinio::status_moved_permanently ()
http_status_line_t restinio::status_found ()
http_status_line_t restinio::status_see_other ()
http_status_line_t restinio::status_not_modified ()
http_status_line_t restinio::status_use_proxy ()
http_status_line_t restinio::status_temporary_redirect ()
http_status_line_t restinio::status_bad_request ()
http_status_line_t restinio::status_unauthorized ()
http_status_line_t restinio::status_payment_required ()
http_status_line_t restinio::status_forbidden ()
http_status_line_t restinio::status_not_found ()
http_status_line_t restinio::status_method_not_allowed ()
http_status_line_t restinio::status_not_acceptable ()
http_status_line_t restinio::status_proxy_authentication_required ()
http_status_line_t restinio::status_request_time_out ()
http_status_line_t restinio::status_conflict ()
http_status_line_t restinio::status_gone ()
http_status_line_t restinio::status_length_required ()
http_status_line_t restinio::status_precondition_failed ()
http_status_line_t restinio::status_payload_too_large ()
http_status_line_t restinio::status_uri_too_long ()
http_status_line_t restinio::status_unsupported_media_type ()
http_status_line_t restinio::status_requested_range_not_satisfiable ()
http_status_line_t restinio::status_expectation_failed ()
http_status_line_t restinio::status_internal_server_error ()
http_status_line_t restinio::status_not_implemented ()
http_status_line_t restinio::status_bad_gateway ()
http_status_line_t restinio::status_service_unavailable ()
http_status_line_t restinio::status_gateway_time_out ()
http_status_line_t restinio::status_http_version_not_supported ()
Additional statuses.

Not covered with RFC 2616.

http_status_line_t restinio::status_permanent_redirect ()
http_status_line_t restinio::status_processing ()
http_status_line_t restinio::status_multi_status ()
http_status_line_t restinio::status_unprocessable_entity ()
http_status_line_t restinio::status_locked ()
http_status_line_t restinio::status_failed_dependency ()
http_status_line_t restinio::status_insufficient_storage ()
http_status_line_t restinio::status_precondition_required ()
http_status_line_t restinio::status_too_many_requests ()
http_status_line_t restinio::status_request_header_fields_too_large ()
http_status_line_t restinio::status_network_authentication_required ()

Variables

RFC 2616 status code list.
constexpr http_status_code_t restinio::status_code::continue_ { 100 }
constexpr http_status_code_t restinio::status_code::switching_protocols { 101 }
constexpr http_status_code_t restinio::status_code::ok { 200 }
constexpr http_status_code_t restinio::status_code::created { 201 }
constexpr http_status_code_t restinio::status_code::accepted { 202 }
constexpr http_status_code_t restinio::status_code::non_authoritative_information { 203 }
constexpr http_status_code_t restinio::status_code::no_content { 204 }
constexpr http_status_code_t restinio::status_code::reset_content { 205 }
constexpr http_status_code_t restinio::status_code::partial_content { 206 }
constexpr http_status_code_t restinio::status_code::multiple_choices { 300 }
constexpr http_status_code_t restinio::status_code::moved_permanently { 301 }
constexpr http_status_code_t restinio::status_code::found { 302 }
constexpr http_status_code_t restinio::status_code::see_other { 303 }
constexpr http_status_code_t restinio::status_code::not_modified { 304 }
constexpr http_status_code_t restinio::status_code::use_proxy { 305 }
constexpr http_status_code_t restinio::status_code::temporary_redirect { 307 }
constexpr http_status_code_t restinio::status_code::bad_request { 400 }
constexpr http_status_code_t restinio::status_code::unauthorized { 401 }
constexpr http_status_code_t restinio::status_code::payment_required { 402 }
constexpr http_status_code_t restinio::status_code::forbidden { 403 }
constexpr http_status_code_t restinio::status_code::not_found { 404 }
constexpr http_status_code_t restinio::status_code::method_not_allowed { 405 }
constexpr http_status_code_t restinio::status_code::not_acceptable { 406 }
constexpr http_status_code_t restinio::status_code::proxy_authentication_required { 407 }
constexpr http_status_code_t restinio::status_code::request_time_out { 408 }
constexpr http_status_code_t restinio::status_code::conflict { 409 }
constexpr http_status_code_t restinio::status_code::gone { 410 }
constexpr http_status_code_t restinio::status_code::length_required { 411 }
constexpr http_status_code_t restinio::status_code::precondition_failed { 412 }
constexpr http_status_code_t restinio::status_code::payload_too_large { 413 }
constexpr http_status_code_t restinio::status_code::uri_too_long { 414 }
constexpr http_status_code_t restinio::status_code::unsupported_media_type { 415 }
constexpr http_status_code_t restinio::status_code::requested_range_not_satisfiable { 416 }
constexpr http_status_code_t restinio::status_code::expectation_failed { 417 }
constexpr http_status_code_t restinio::status_code::internal_server_error { 500 }
constexpr http_status_code_t restinio::status_code::not_implemented { 501 }
constexpr http_status_code_t restinio::status_code::bad_gateway { 502 }
constexpr http_status_code_t restinio::status_code::service_unavailable { 503 }
constexpr http_status_code_t restinio::status_code::gateway_time_out { 504 }
constexpr http_status_code_t restinio::status_code::http_version_not_supported { 505 }
Additional status codes.

Codes not covered with RFC 2616.

constexpr http_status_code_t restinio::status_code::permanent_redirect { 308 }
constexpr http_status_code_t restinio::status_code::processing { 102 }
constexpr http_status_code_t restinio::status_code::multi_status { 207 }
constexpr http_status_code_t restinio::status_code::unprocessable_entity { 422 }
constexpr http_status_code_t restinio::status_code::locked { 423 }
constexpr http_status_code_t restinio::status_code::failed_dependency { 424 }
constexpr http_status_code_t restinio::status_code::insufficient_storage { 507 }
constexpr http_status_code_t restinio::status_code::precondition_required { 428 }
constexpr http_status_code_t restinio::status_code::too_many_requests { 429 }
constexpr http_status_code_t restinio::status_code::request_header_fields_too_large { 431 }
constexpr http_status_code_t restinio::status_code::network_authentication_required { 511 }
#define RESTINIO_HEADER_FIELDS_DEFAULT_RESERVE_COUNT   4
#define RESTINIO_HTTP_METHOD_MAP(RESTINIO_GEN)
 HTTP methods mapping with nodejs http methods.
#define RESTINIO_HTTP_METHOD_FUNC_GEN(func_name, nodejs_code, method_name)
#define RESTINIO_HTTP_METHOD_FUNC_GEN(func_name, nodejs_code, method_name)
enum class  restinio::http_connection_header_t : std::uint8_t { restinio::keep_alive , restinio::close , restinio::upgrade }
 Values for conection header field. More...
http_field_t restinio::string_to_field (string_view_t field) noexcept
 Helper function to get method string name.
const char * restinio::field_to_string (http_field_t f) noexcept
 Helper sunction to get method string name.
std::ostream & restinio::operator<< (std::ostream &to, const http_method_id_t &m)
constexpr http_method_id_t restinio::http_method_unknown ()
template<typename CharT, typename Traits>
std::basic_ostream< CharT, Traits > & restinio::operator<< (std::basic_ostream< CharT, Traits > &to, const http_status_code_t &status_code)
 Helper for printing status_code to ostream.
std::ostream & restinio::operator<< (std::ostream &o, const http_status_line_t &status_line)

Macro Definition Documentation

◆ RESTINIO_HEADER_FIELDS_DEFAULT_RESERVE_COUNT

#define RESTINIO_HEADER_FIELDS_DEFAULT_RESERVE_COUNT   4

Definition at line 669 of file http_headers.hpp.

◆ RESTINIO_HTTP_CHECK_FOR_FIELD

#define RESTINIO_HTTP_CHECK_FOR_FIELD ( field_id,
candidate_field_name )
Value:
if( impl::is_equal_caseless(field_name, #candidate_field_name , field_name_size ) ) \
return http_field_t:: field_id;

◆ RESTINIO_HTTP_FIELD_GEN

#define RESTINIO_HTTP_FIELD_GEN ( name,
ignored )
Value:
name,

Definition at line 235 of file http_headers.hpp.

◆ RESTINIO_HTTP_FIELD_STR_GEN

#define RESTINIO_HTTP_FIELD_STR_GEN ( name,
string_name )
Value:
case http_field_t::name: result = #string_name; break;

◆ RESTINIO_HTTP_FIELDS_MAP

#define RESTINIO_HTTP_FIELDS_MAP ( RESTINIO_GEN)

Definition at line 35 of file http_headers.hpp.

◆ RESTINIO_HTTP_METHOD_FUNC_GEN [1/2]

#define RESTINIO_HTTP_METHOD_FUNC_GEN ( func_name,
nodejs_code,
method_name )
Value:
inline constexpr http_method_id_t func_name() { \
return { nodejs_code, #method_name }; \
}

Definition at line 1801 of file http_headers.hpp.

◆ RESTINIO_HTTP_METHOD_FUNC_GEN [2/2]

#define RESTINIO_HTTP_METHOD_FUNC_GEN ( func_name,
nodejs_code,
method_name )
Value:
case nodejs_code : result = func_name(); break;

Definition at line 1801 of file http_headers.hpp.

◆ RESTINIO_HTTP_METHOD_MAP

#define RESTINIO_HTTP_METHOD_MAP ( RESTINIO_GEN)

HTTP methods mapping with nodejs http methods.

Definition at line 1654 of file http_headers.hpp.