26#ifndef MYSQLROUTER_HTTP_REQUEST_INCLUDED
27#define MYSQLROUTER_HTTP_REQUEST_INCLUDED
38#include <system_error>
124 return "Switching Protocols";
128 return "Early Hints";
137 return "Non Authoritive Information";
141 return "Reset Content";
143 return "Partial Content";
145 return "Multi Status";
147 return "Already Reported";
152 return "Multiple Choices";
154 return "Moved Permanently";
160 return "Not Modified";
164 return "Temporary Redirect";
166 return "Permanent Redirect";
169 return "Bad Request";
171 return "Unauthorized";
173 return "Payment Required";
179 return "Method Not Allowed";
181 return "Not NotAcceptable";
183 return "Proxy Authentication Required";
185 return "Request Timeout";
191 return "Length Required";
193 return "Precondition Failed";
195 return "Payload Too Large";
197 return "URITooLarge";
199 return "Unsupported MediaType";
201 return "Range Not Satisfiable";
203 return "Expectation Failed";
205 return "I am a Teapot";
207 return "Misdirected Request";
209 return "Unprocessable Entity";
213 return "Failed Dependency";
215 return "Upgrade Required";
217 return "Precondition Required";
219 return "Too Many Requests";
221 return "Request Header Fields Too Large";
223 return "Unavailable For Legal Reasons";
226 return "Internal Error";
228 return "Not Implemented";
230 return "Bad Gateway";
232 return "Service Unavailable";
234 return "Gateway Timeout";
236 return "HTTP Version Not Supported";
238 return "Variant Also Negotiates";
240 return "Insufficient Storage";
242 return "Loop Detected";
244 return "Not Extended";
246 return "Network Authorization Required";
269using Bitset = std::bitset<Pos::_LAST + 1>;
292 bool is_valid()
const {
return handle_ !=
nullptr; }
308 std::pair<std::string, std::string> operator*();
322 int add(
const char *
key,
const char *value);
327 const char *
get(
const char *
key)
const;
360 void add(
const char *data,
size_t data_size);
365 void add_file(
int file_fd, off_t offset, off_t size);
375 std::vector<uint8_t> pop_front(
size_t length);
402 static std::string
decode(
const std::string &uri_str,
const bool decode_plus);
408 std::string
join()
const;
410 std::string get_scheme()
const;
411 void set_scheme(
const std::string &scheme);
413 std::string get_userinfo()
const;
414 void set_userinfo(
const std::string &userinfo);
416 std::string get_host()
const;
417 void set_host(
const std::string &
host);
419 uint16_t get_port()
const;
420 void set_port(uint16_t
port)
const;
425 std::string get_path()
const;
426 void set_path(
const std::string &
path);
428 std::string get_fragment()
const;
429 void set_fragment(
const std::string &fragment);
431 std::string get_query()
const;
432 void set_query(
const std::string &
query);
437 operator bool()
const;
442 HttpUri(std::unique_ptr<impl> &&uri);
467 unsigned get_response_code()
const;
468 std::string get_response_code_line()
const;
475 send_reply(status_code,
478 void send_reply(
int status_code, std::string status_text);
479 void send_reply(
int status_code, std::string status_text,
HttpBuffer &
buffer);
482 send_error(status_code,
485 void send_error(
int status_code, std::string status_text);
489 operator bool()
const;
492 void error_code(
int);
493 std::string error_msg();
495 std::error_code socket_error_code()
const;
496 void socket_error_code(std::error_code ec);
504 bool is_modified_since(time_t last_modified);
509 bool add_last_modified(time_t last_modified);
582 const std::string &uri_path);
599 size_t date_buf_len);
A simple bitset wrapper class, which lets you access an existing range of bytes (not owned by it!...
Definition: ut0bitset.h:54
Main event registration and dispatch engine
Definition: http_common.h:115
Enables bufforing of I/O for a socket.
Definition: http_common.h:200
Http bound socket.
Definition: http_request.h:287
BoundHandle handle_
Definition: http_request.h:295
void * BoundHandle
Definition: http_request.h:289
EventHttpBoundSocket(BoundHandle handle)
Definition: http_request.h:290
bool is_valid() const
Definition: http_request.h:292
Http server build on top of EventBase.
Definition: http_request.h:526
std::unique_ptr< impl > pImpl_
Definition: http_request.h:563
void(*)(HttpRequest *, void *) CallbackRequest
Definition: http_request.h:528
net::impl::socket::native_handle_type SocketHandle
Definition: http_request.h:530
EventBuffer(*)(EventBase *, void *) CallbackBuffer
Definition: http_request.h:529
a Buffer to send/read from network.
Definition: http_request.h:351
std::unique_ptr< impl > pImpl_
Definition: http_request.h:382
HttpBuffer(HttpBuffer &&)
Definition: http_client.h:65
a HTTP request and response.
Definition: http_request.h:454
void(*)(HttpRequest *, void *) RequestHandler
Definition: http_request.h:456
void send_error(int status_code)
Definition: http_request.h:481
std::unique_ptr< impl > pImpl_
Definition: http_request.h:516
void send_reply(int status_code)
Definition: http_request.h:474
representation of HTTP URI.
Definition: http_request.h:392
std::unique_ptr< impl > pImpl_
Definition: http_request.h:444
This class is used to trace function calls and other process information.
Definition: semisync.h:43
#define HTTP_COMMON_EXPORT
Definition: http_common_export.h:40
HTTP_COMMON_EXPORT std::string http_uri_path_canonicalize(const std::string &uri_path)
canonicalize a URI path.
Definition: http_common.cc:415
HTTP_COMMON_EXPORT time_t time_from_rfc5322_fixdate(const char *date_buf)
convert a Date: header into a time_t.
Definition: http_time.cc:76
HTTP_COMMON_EXPORT int time_to_rfc5322_fixdate(time_t ts, char *date_buf, size_t date_buf_len)
convert time_t into a Date: header value.
Definition: http_time.cc:37
static std::string to_string(const LEX_STRING &str)
Definition: lex_string.h:50
bool operator!=(const my_thread_handle &a, const my_thread_handle &b)
Definition: my_thread.h:158
static char * query
Definition: myisam_ftdump.cc:45
const char * host
Definition: mysqladmin.cc:59
static char * path
Definition: mysqldump.cc:137
constexpr pos_type Options
Definition: http_request.h:262
constexpr pos_type Connect
Definition: http_request.h:264
constexpr pos_type Patch
Definition: http_request.h:265
constexpr pos_type Head
Definition: http_request.h:259
constexpr pos_type Get
Definition: http_request.h:257
constexpr pos_type _LAST
Definition: http_request.h:267
constexpr pos_type Put
Definition: http_request.h:260
constexpr pos_type Delete
Definition: http_request.h:261
constexpr pos_type Post
Definition: http_request.h:258
constexpr pos_type Trace
Definition: http_request.h:263
Definition: http_request.h:253
constexpr type Get
Definition: http_request.h:271
std::bitset< Pos::_LAST+1 > Bitset
Definition: http_request.h:269
constexpr type Delete
Definition: http_request.h:275
int type
Definition: http_request.h:254
constexpr type Options
Definition: http_request.h:276
unsigned pos_type
Definition: http_request.h:255
constexpr type Patch
Definition: http_request.h:279
constexpr type Connect
Definition: http_request.h:278
constexpr type Post
Definition: http_request.h:272
constexpr type Head
Definition: http_request.h:273
constexpr type Put
Definition: http_request.h:274
Definition: http_request.h:49
constexpr key_type PermanentRedirect
Definition: http_request.h:76
constexpr key_type ResetContent
Definition: http_request.h:63
constexpr key_type Gone
Definition: http_request.h:88
constexpr key_type Processing
Definition: http_request.h:55
constexpr key_type VariantAlsoNegotiates
Definition: http_request.h:113
int key_type
Definition: http_request.h:51
constexpr key_type ExpectationFailed
Definition: http_request.h:95
constexpr key_type PreconditionFailed
Definition: http_request.h:90
constexpr key_type RequestHeaderFieldsTooLarge
Definition: http_request.h:104
constexpr key_type InternalError
Definition: http_request.h:107
constexpr key_type UnsupportedMediaType
Definition: http_request.h:93
constexpr key_type MethodNotAllowed
Definition: http_request.h:83
constexpr key_type EarlyHints
Definition: http_request.h:56
constexpr key_type Continue
Definition: http_request.h:53
constexpr key_type MovedPermanently
Definition: http_request.h:70
constexpr key_type HTTPVersionNotSupported
Definition: http_request.h:112
constexpr key_type InstanceManipulationUsed
Definition: http_request.h:67
constexpr key_type NotExtended
Definition: http_request.h:116
constexpr key_type Accepted
Definition: http_request.h:60
constexpr key_type FailedDependency
Definition: http_request.h:100
constexpr key_type RequestTimeout
Definition: http_request.h:86
constexpr key_type MisdirectedRequest
Definition: http_request.h:97
constexpr key_type NoContent
Definition: http_request.h:62
constexpr key_type BadRequest
Definition: http_request.h:78
constexpr key_type LengthRequired
Definition: http_request.h:89
constexpr key_type UpgradeRequired
Definition: http_request.h:101
constexpr key_type GatewayTimeout
Definition: http_request.h:111
constexpr key_type SeeOther
Definition: http_request.h:72
constexpr key_type UnavailableForLegalReasons
Definition: http_request.h:105
constexpr key_type PartialContent
Definition: http_request.h:64
constexpr key_type Forbidden
Definition: http_request.h:81
constexpr key_type IamaTeapot
Definition: http_request.h:96
constexpr key_type MultipleChoices
Definition: http_request.h:69
constexpr key_type BadGateway
Definition: http_request.h:109
constexpr key_type NetworkAuthorizationRequired
Definition: http_request.h:117
constexpr key_type Created
Definition: http_request.h:59
constexpr key_type NotAcceptable
Definition: http_request.h:84
constexpr key_type Conflicts
Definition: http_request.h:87
constexpr key_type NotImplemented
Definition: http_request.h:108
constexpr key_type Found
Definition: http_request.h:71
constexpr key_type SwitchingProtocols
Definition: http_request.h:54
constexpr key_type UnprocessableEntity
Definition: http_request.h:98
name_type get_default_status_text(key_type key)
Definition: http_request.h:119
constexpr key_type Ok
Definition: http_request.h:58
constexpr key_type Locked
Definition: http_request.h:99
constexpr key_type RangeNotSatisfiable
Definition: http_request.h:94
constexpr key_type Unauthorized
Definition: http_request.h:79
constexpr key_type InsufficientStorage
Definition: http_request.h:114
constexpr key_type MultiStatus
Definition: http_request.h:65
constexpr key_type ProxyAuthenticationRequired
Definition: http_request.h:85
constexpr key_type PreconditionRequired
Definition: http_request.h:102
constexpr key_type TooManyRequests
Definition: http_request.h:103
const char * name_type
Definition: http_request.h:50
constexpr key_type ServiceUnavailable
Definition: http_request.h:110
constexpr key_type TemporaryRedirect
Definition: http_request.h:75
constexpr key_type PayloadTooLarge
Definition: http_request.h:91
constexpr key_type NotFound
Definition: http_request.h:82
constexpr key_type URITooLarge
Definition: http_request.h:92
constexpr key_type LoopDetected
Definition: http_request.h:115
constexpr key_type PaymentRequired
Definition: http_request.h:80
constexpr key_type NonAuthoritiveInformation
Definition: http_request.h:61
constexpr key_type UseProxy
Definition: http_request.h:74
constexpr key_type NotModified
Definition: http_request.h:73
constexpr key_type AlreadyReported
Definition: http_request.h:66
stdx::expected< std::pair< size_t, T >, std::error_code > decode(const net::const_buffer &buffer, capabilities::value_type caps)
decode a message from a buffer.
Definition: classic_protocol_codec_base.h:119
bool length(const dd::Spatial_reference_system *srs, const Geometry *g1, double *length, bool *null) noexcept
Computes the length of linestrings and multilinestrings.
Definition: length.cc:76
Definition: authentication.cc:36
std::string join(Container cont, const std::string &delim)
join elements of an container into a string separated by a delimiter.
Definition: string.h:151
int native_handle_type
Definition: socket_constants.h:51
mutable_buffer buffer(void *p, size_t n) noexcept
Definition: buffer.h:420
void get(PSI_field *, PSI_longlong *) noexcept
Definition: pfs_plugin_column_bigint_v1_all_empty.cc:32
static mysql_service_status_t add(reference_caching_channel channel, const char *implementation_name) noexcept
Definition: component.cc:135
Cursor end()
A past-the-end Cursor.
Definition: rules_table_service.cc:192
static int handle(int sql_errno, const char *sqlstate, const char *message, void *state)
Bridge function between the C++ API offered by this module and the C API of the parser service.
Definition: services.cc:64
bool parse(MYSQL_THD thd, const string &query, bool is_prepared, Condition_handler *handler)
Definition: services.cc:81
required string key
Definition: replication_asynchronous_connection_failover.proto:60
required uint64 port
Definition: replication_asynchronous_connection_failover.proto:33
Ssl_acceptor_context_property_type & operator++(Ssl_acceptor_context_property_type &property_type)
Increment operator for Ssl_acceptor_context_type Used by iterator.
Definition: ssl_acceptor_context_data.cc:114