WebSocket++
0.8.3-dev
C++ websocket client/server library
|
Base HTTP parser. More...
#include <parser.hpp>
Public Member Functions | |
std::string const & | get_version () const |
Get the HTTP version string. More... | |
void | set_version (std::string const &version) |
Set HTTP parser Version. More... | |
std::string const & | get_header (std::string const &key) const |
Get the value of an HTTP header. More... | |
bool | get_header_as_plist (std::string const &key, parameter_list &out) const |
Extract an HTTP parameter list from a parser header. More... | |
header_list const & | get_headers () const |
Return a list of all HTTP headers. More... | |
void | append_header (std::string const &key, std::string const &val, lib::error_code &ec) |
Append a value to an existing HTTP header. More... | |
void | replace_header (std::string const &key, std::string const &val, lib::error_code &ec) |
Set a value for an HTTP header, replacing an existing value. More... | |
void | remove_header (std::string const &key, lib::error_code &ec) |
Remove a header from the parser. More... | |
std::string const & | get_body () const |
Get HTTP body. More... | |
void | set_body (std::string const &value, lib::error_code &ec) |
Set body content. More... | |
size_t | get_max_body_size () const |
Get body size limit. More... | |
void | set_max_body_size (size_t value) |
Set body size limit. More... | |
bool | parse_parameter_list (std::string const &in, parameter_list &out) const |
Extract an HTTP parameter list from a string. More... | |
Protected Member Functions | |
void | process_header (std::string::iterator begin, std::string::iterator end) |
Process a header line. More... | |
bool | prepare_body (lib::error_code &ec) |
Prepare the parser to begin parsing body data. More... | |
size_t | process_body (char const *buf, size_t len) |
Process body data. More... | |
bool | body_ready () const |
Check if the parser is done parsing the body. More... | |
std::string | raw_headers () const |
Generate and return the HTTP headers as a string. More... | |
Protected Attributes | |
std::string | m_version |
header_list | m_headers |
size_t | m_header_bytes |
std::string | m_body |
size_t | m_body_bytes_needed |
size_t | m_body_bytes_max |
body_encoding::value | m_body_encoding |
Base HTTP parser.
Includes methods and data elements common to all types of HTTP messages such as headers, versions, bodies, etc.
Definition at line 398 of file parser.hpp.
|
inline |
Append a value to an existing HTTP header.
This method will set the value of the HTTP header key
with the indicated value. If a header with the name key
already exists, val
will be appended to the existing value.
Note: per HTTP specs header values are compared case insensitively.
[in] | key | The name/key of the header to append to. |
[in] | val | The value to append. |
[out] | ec | A status code describing the outcome of the operation. |
Definition at line 69 of file parser.hpp.
|
inlineprotected |
Check if the parser is done parsing the body.
Behavior before a call to prepare_body
is undefined.
Definition at line 607 of file parser.hpp.
|
inline |
Get HTTP body.
Gets the body of the HTTP object
Definition at line 510 of file parser.hpp.
|
inline |
Get the value of an HTTP header.
Note: per HTTP specs header values are compared case insensitively.
[in] | key | The name/key of the header to get. |
Definition at line 45 of file parser.hpp.
|
inline |
Extract an HTTP parameter list from a parser header.
If the header requested doesn't exist or exists and is empty the parameter list is valid (but empty).
[in] | key | The name/key of the HTTP header to use as input. |
[out] | out | The parameter list to store extracted parameters in. |
Definition at line 57 of file parser.hpp.
|
inline |
Return a list of all HTTP headers.
Return a list of all HTTP headers
Definition at line 204 of file parser.hpp.
|
inline |
Get body size limit.
Retrieves the maximum number of bytes to parse & buffer before canceling a request.
Definition at line 535 of file parser.hpp.
|
inline |
Get the HTTP version string.
Definition at line 410 of file parser.hpp.
|
inline |
Extract an HTTP parameter list from a string.
[in] | in | The input string. |
[out] | out | The parameter list to store extracted parameters in. |
Definition at line 132 of file parser.hpp.
|
inlineprotected |
Prepare the parser to begin parsing body data.
Inspects headers to determine if the message has a body that needs to be read. If so, sets up the necessary state, otherwise returns false. If this method returns true and loading the message body is desired call process_body
until it returns zero bytes or an error.
Must not be called until after all headers have been processed.
[out] | ec | A status code describing the outcome of the operation. |
Definition at line 144 of file parser.hpp.
|
inlineprotected |
Process body data.
Parses body data.
[in] | begin | An iterator to the beginning of the sequence. |
[in] | end | An iterator to the end of the sequence. |
Definition at line 170 of file parser.hpp.
|
inlineprotected |
Process a header line.
[in] | begin | An iterator to the beginning of the sequence. |
[in] | end | An iterator to the end of the sequence. |
Definition at line 186 of file parser.hpp.
|
inlineprotected |
Generate and return the HTTP headers as a string.
Each headers will be followed by the \r
sequence including the last one. A second \r
sequence (blank header) is not appended by this method
Definition at line 208 of file parser.hpp.
|
inline |
Remove a header from the parser.
Removes the header entirely from the parser. This is different than setting the value of the header to blank.
Note: per HTTP specs header values are compared case insensitively.
[in] | key | The name/key of the header to remove. |
[out] | ec | A status code describing the outcome of the operation. |
Definition at line 97 of file parser.hpp.
|
inline |
Set a value for an HTTP header, replacing an existing value.
This method will set the value of the HTTP header key
with the indicated value. If a header with the name key
already exists, val
will replace the existing value.
Note: per HTTP specs header values are compared case insensitively.
[in] | key | The name/key of the header to append to. |
[in] | val | The value to append. |
[out] | ec | A status code describing the outcome of the operation. |
Definition at line 85 of file parser.hpp.
|
inline |
Set body content.
Set the body content of the HTTP response to the parameter string. Note set_body will also set the Content-Length HTTP header to the appropriate value. If you want the Content-Length header to be something else, do so via replace_header("Content-Length") after calling set_body()
value | String data to include as the body content. | |
[out] | ec | A status code describing the outcome of the operation. |
Definition at line 109 of file parser.hpp.
|
inline |
Set body size limit.
Set the maximum number of bytes to parse and buffer before canceling a request.
value | The size to set the max body length to. |
Definition at line 548 of file parser.hpp.
|
inline |
Set HTTP parser Version.
Input should be in format: HTTP/x.y where x and y are positive integers.
[in] | version | The value to set the HTTP version to. |
Definition at line 41 of file parser.hpp.