PionNetworkLibrary
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
pion::http::request Class Reference

#include <request.hpp>

Inheritance diagram for pion::http::request:
Collaboration diagram for pion::http::request:

Public Member Functions

 request (const std::string &resource)
 
 request (void)
 constructs a new request object (default constructor) More...
 
virtual ~request ()
 virtual destructor More...
 
virtual void clear (void)
 clears all request data More...
 
virtual bool is_content_length_implied (void) const
 the content length of the message can never be implied for requests More...
 
const std::string & get_method (void) const
 returns the request method (i.e. GET, POST, PUT) More...
 
const std::string & get_resource (void) const
 returns the resource uri-stem to be delivered (possibly the result of a redirect) More...
 
const std::string & get_original_resource (void) const
 returns the resource uri-stem originally requested More...
 
const std::string & get_query_string (void) const
 returns the uri-query or query string requested More...
 
const std::string & get_query (const std::string &key) const
 returns a value for the query key if any are defined; otherwise, an empty string More...
 
ihash_multimapget_queries (void)
 returns the query parameters More...
 
bool has_query (const std::string &key) const
 returns true if at least one value for the query key is defined More...
 
void set_method (const std::string &str)
 sets the HTTP request method (i.e. GET, POST, PUT) More...
 
void set_resource (const std::string &str)
 sets the resource or uri-stem originally requested More...
 
void change_resource (const std::string &str)
 changes the resource or uri-stem to be delivered (called as the result of a redirect) More...
 
void set_query_string (const std::string &str)
 sets the uri-query or query string requested More...
 
void add_query (const std::string &key, const std::string &value)
 adds a value for the query key More...
 
void change_query (const std::string &key, const std::string &value)
 changes the value of a query key More...
 
void delete_query (const std::string &key)
 removes all values for a query key More...
 
void use_query_params_for_query_string (void)
 use the query parameters to build a query string for the request More...
 
void use_query_params_for_post_content (void)
 use the query parameters to build POST content for the request More...
 
void set_content (const std::string &value)
 add content (for POST) from string More...
 
void set_content (const char *value, size_t size)
 
void set_user (user_ptr user)
 sets the user record for HTTP request after authentication More...
 
user_ptr get_user () const
 get the user record for HTTP request after authentication More...
 
- Public Member Functions inherited from pion::http::message
 message (void)
 constructs a new HTTP message object More...
 
 message (const message &http_msg)
 copy constructor More...
 
messageoperator= (const message &http_msg)
 assignment operator More...
 
virtual ~message ()
 virtual destructor More...
 
bool is_valid (void) const
 returns true if the message is valid More...
 
bool get_chunks_supported (void) const
 returns true if chunked transfer encodings are supported More...
 
boost::asio::ip::address & get_remote_ip (void)
 returns IP address of the remote endpoint More...
 
boost::uint16_t get_version_major (void) const
 returns the major HTTP version number More...
 
boost::uint16_t get_version_minor (void) const
 returns the minor HTTP version number More...
 
std::string get_version_string (void) const
 returns a string representation of the HTTP version (i.e. "HTTP/1.1") More...
 
size_t get_content_length (void) const
 returns the length of the payload content (in bytes) More...
 
bool is_chunked (void) const
 returns true if the message content is chunked More...
 
bool is_content_buffer_allocated () const
 returns true if buffer for content is allocated More...
 
std::size_t get_content_buffer_size () const
 returns size of allocated buffer More...
 
char * get_content (void)
 returns a pointer to the payload content, or empty string if there is none More...
 
const char * get_content (void) const
 returns a const pointer to the payload content, or empty string if there is none More...
 
chunk_cache_tget_chunk_cache (void)
 returns a reference to the chunk cache More...
 
const std::string & get_header (const std::string &key) const
 returns a value for the header if any are defined; otherwise, an empty string More...
 
ihash_multimapget_headers (void)
 returns a reference to the HTTP headers More...
 
bool has_header (const std::string &key) const
 returns true if at least one value for the header is defined More...
 
const std::string & get_cookie (const std::string &key) const
 
ihash_multimapget_cookies (void)
 returns the cookie parameters More...
 
bool has_cookie (const std::string &key) const
 
void add_cookie (const std::string &key, const std::string &value)
 
void change_cookie (const std::string &key, const std::string &value)
 
void delete_cookie (const std::string &key)
 
const std::string & get_first_line (void) const
 returns a string containing the first line for the HTTP message More...
 
bool has_missing_packets () const
 true if there were missing packets More...
 
void set_missing_packets (bool newVal)
 set to true when missing packets detected More...
 
bool has_data_after_missing_packets () const
 true if more data seen after the missing packets More...
 
void set_data_after_missing_packet (bool newVal)
 
void set_is_valid (bool b=true)
 sets whether or not the message is valid More...
 
void set_chunks_supported (bool b)
 set to true if chunked transfer encodings are supported More...
 
void set_remote_ip (const boost::asio::ip::address &ip)
 sets IP address of the remote endpoint More...
 
void set_version_major (const boost::uint16_t n)
 sets the major HTTP version number More...
 
void set_version_minor (const boost::uint16_t n)
 sets the minor HTTP version number More...
 
void set_content_length (size_t n)
 sets the length of the payload content (in bytes) More...
 
void set_do_not_send_content_length (void)
 if called, the content-length will not be sent in the HTTP headers More...
 
data_status_t get_status () const
 return the data receival status More...
 
void set_status (data_status_t newVal)
 
void update_content_length_using_header (void)
 sets the length of the payload content using the Content-Length header More...
 
void update_transfer_encoding_using_header (void)
 sets the transfer coding using the Transfer-Encoding header More...
 
char * create_content_buffer (void)
 
void set_content (const std::string &content)
 resets payload content to match the value of a string More...
 
void clear_content (void)
 clears payload content buffer More...
 
void set_content_type (const std::string &type)
 sets the content type for the message payload More...
 
void add_header (const std::string &key, const std::string &value)
 adds a value for the HTTP header named key More...
 
void change_header (const std::string &key, const std::string &value)
 changes the value for the HTTP header named key More...
 
void delete_header (const std::string &key)
 removes all values for the HTTP header named key More...
 
bool check_keep_alive (void) const
 returns true if the HTTP connection may be kept alive More...
 
void prepare_buffers_for_send (write_buffers_t &write_buffers, const bool keep_alive, const bool using_chunks)
 
std::size_t send (tcp::connection &tcp_conn, boost::system::error_code &ec, bool headers_only=false)
 
std::size_t receive (tcp::connection &tcp_conn, boost::system::error_code &ec, parser &http_parser)
 
std::size_t receive (tcp::connection &tcp_conn, boost::system::error_code &ec, bool headers_only=false, std::size_t max_content_length=static_cast< size_t >(-1))
 
std::size_t write (std::ostream &out, boost::system::error_code &ec, bool headers_only=false)
 
std::size_t read (std::istream &in, boost::system::error_code &ec, parser &http_parser)
 
std::size_t read (std::istream &in, boost::system::error_code &ec, bool headers_only=false, std::size_t max_content_length=static_cast< size_t >(-1))
 
void concatenate_chunks (void)
 
- Public Member Functions inherited from pion::http::types
virtual ~types ()
 virtual destructor More...
 

Protected Member Functions

virtual void update_first_line (void) const
 updates the string containing the first line for the HTTP message More...
 
virtual void append_cookie_headers (void)
 appends HTTP headers for any cookies defined by the http::message More...
 
- Protected Member Functions inherited from pion::http::message
void prepare_headers_for_send (const bool keep_alive, const bool using_chunks)
 
void append_headers (write_buffers_t &write_buffers)
 
void clear_first_line (void) const
 

Additional Inherited Members

- Public Types inherited from pion::http::message
enum  data_status_t { STATUS_NONE, STATUS_TRUNCATED, STATUS_PARTIAL, STATUS_OK }
 defines message data integrity status codes More...
 
typedef std::vector
< boost::asio::const_buffer > 
write_buffers_t
 data type for I/O write buffers (these wrap existing data to be sent) More...
 
typedef std::vector< char > chunk_cache_t
 used to cache chunked data More...
 
- Static Public Member Functions inherited from pion::http::types
static std::string get_date_string (const time_t t)
 converts time_t format into an HTTP-date string More...
 
static std::string make_query_string (const ihash_multimap &query_params)
 builds an HTTP query string from a collection of query parameters More...
 
static std::string make_set_cookie_header (const std::string &name, const std::string &value, const std::string &path, const bool has_max_age=false, const unsigned long max_age=0)
 
- Static Public Attributes inherited from pion::http::types
static const std::string STRING_EMPTY
 
static const std::string STRING_CRLF
 
static const std::string STRING_HTTP_VERSION
 
static const std::string HEADER_NAME_VALUE_DELIMITER
 
static const std::string COOKIE_NAME_VALUE_DELIMITER
 
static const std::string HEADER_HOST
 
static const std::string HEADER_COOKIE
 
static const std::string HEADER_SET_COOKIE
 
static const std::string HEADER_CONNECTION
 
static const std::string HEADER_CONTENT_TYPE
 
static const std::string HEADER_CONTENT_LENGTH
 
static const std::string HEADER_CONTENT_LOCATION
 
static const std::string HEADER_CONTENT_ENCODING
 
static const std::string HEADER_CONTENT_DISPOSITION
 
static const std::string HEADER_LAST_MODIFIED
 
static const std::string HEADER_IF_MODIFIED_SINCE
 
static const std::string HEADER_TRANSFER_ENCODING
 
static const std::string HEADER_LOCATION
 
static const std::string HEADER_AUTHORIZATION
 
static const std::string HEADER_REFERER
 
static const std::string HEADER_USER_AGENT
 
static const std::string HEADER_X_FORWARDED_FOR
 
static const std::string HEADER_CLIENT_IP
 
static const std::string CONTENT_TYPE_HTML
 
static const std::string CONTENT_TYPE_TEXT
 
static const std::string CONTENT_TYPE_XML
 
static const std::string CONTENT_TYPE_URLENCODED
 
static const std::string CONTENT_TYPE_MULTIPART_FORM_DATA
 
static const std::string REQUEST_METHOD_HEAD
 
static const std::string REQUEST_METHOD_GET
 
static const std::string REQUEST_METHOD_PUT
 
static const std::string REQUEST_METHOD_POST
 
static const std::string REQUEST_METHOD_DELETE
 
static const std::string RESPONSE_MESSAGE_OK
 
static const std::string RESPONSE_MESSAGE_CREATED
 
static const std::string RESPONSE_MESSAGE_ACCEPTED
 
static const std::string RESPONSE_MESSAGE_NO_CONTENT
 
static const std::string RESPONSE_MESSAGE_FOUND
 
static const std::string RESPONSE_MESSAGE_UNAUTHORIZED
 
static const std::string RESPONSE_MESSAGE_FORBIDDEN
 
static const std::string RESPONSE_MESSAGE_NOT_FOUND
 
static const std::string RESPONSE_MESSAGE_METHOD_NOT_ALLOWED
 
static const std::string RESPONSE_MESSAGE_NOT_MODIFIED
 
static const std::string RESPONSE_MESSAGE_BAD_REQUEST
 
static const std::string RESPONSE_MESSAGE_SERVER_ERROR
 
static const std::string RESPONSE_MESSAGE_NOT_IMPLEMENTED
 
static const std::string RESPONSE_MESSAGE_CONTINUE
 
static const unsigned int RESPONSE_CODE_OK = 200
 
static const unsigned int RESPONSE_CODE_CREATED = 201
 
static const unsigned int RESPONSE_CODE_ACCEPTED = 202
 
static const unsigned int RESPONSE_CODE_NO_CONTENT = 204
 
static const unsigned int RESPONSE_CODE_FOUND = 302
 
static const unsigned int RESPONSE_CODE_UNAUTHORIZED = 401
 
static const unsigned int RESPONSE_CODE_FORBIDDEN = 403
 
static const unsigned int RESPONSE_CODE_NOT_FOUND = 404
 
static const unsigned int RESPONSE_CODE_METHOD_NOT_ALLOWED = 405
 
static const unsigned int RESPONSE_CODE_NOT_MODIFIED = 304
 
static const unsigned int RESPONSE_CODE_BAD_REQUEST = 400
 
static const unsigned int RESPONSE_CODE_SERVER_ERROR = 500
 
static const unsigned int RESPONSE_CODE_NOT_IMPLEMENTED = 501
 
static const unsigned int RESPONSE_CODE_CONTINUE = 100
 
- Static Protected Member Functions inherited from pion::http::message
template<typename DictionaryType >
static const std::string & get_value (const DictionaryType &dict, const std::string &key)
 
template<typename DictionaryType >
static void change_value (DictionaryType &dict, const std::string &key, const std::string &value)
 
template<typename DictionaryType >
static void delete_value (DictionaryType &dict, const std::string &key)
 
- Protected Attributes inherited from pion::http::message
std::string m_first_line
 

Detailed Description

request: container for HTTP request information

Constructor & Destructor Documentation

pion::http::request::request ( const std::string &  resource)
inline

constructs a new request object

Parameters
resourcethe HTTP resource to request
pion::http::request::request ( void  )
inline

constructs a new request object (default constructor)

virtual pion::http::request::~request ( )
inlinevirtual

virtual destructor

Member Function Documentation

void pion::http::request::add_query ( const std::string &  key,
const std::string &  value 
)
inline

adds a value for the query key

virtual void pion::http::request::append_cookie_headers ( void  )
inlineprotectedvirtual
void pion::http::request::change_query ( const std::string &  key,
const std::string &  value 
)
inline

changes the value of a query key

References pion::http::message::change_value().

void pion::http::request::change_resource ( const std::string &  str)
inline

changes the resource or uri-stem to be delivered (called as the result of a redirect)

virtual void pion::http::request::clear ( void  )
inlinevirtual

clears all request data

Reimplemented from pion::http::message.

References pion::http::message::clear().

void pion::http::request::delete_query ( const std::string &  key)
inline

removes all values for a query key

References pion::http::message::delete_value().

const std::string& pion::http::request::get_method ( void  ) const
inline

returns the request method (i.e. GET, POST, PUT)

Referenced by pion::http::response::update_request_info().

const std::string& pion::http::request::get_original_resource ( void  ) const
inline

returns the resource uri-stem originally requested

ihash_multimap& pion::http::request::get_queries ( void  )
inline
const std::string& pion::http::request::get_query ( const std::string &  key) const
inline

returns a value for the query key if any are defined; otherwise, an empty string

References pion::http::message::get_value().

const std::string& pion::http::request::get_query_string ( void  ) const
inline

returns the uri-query or query string requested

const std::string& pion::http::request::get_resource ( void  ) const
inline

returns the resource uri-stem to be delivered (possibly the result of a redirect)

user_ptr pion::http::request::get_user ( ) const
inline

get the user record for HTTP request after authentication

bool pion::http::request::has_query ( const std::string &  key) const
inline

returns true if at least one value for the query key is defined

virtual bool pion::http::request::is_content_length_implied ( void  ) const
inlinevirtual

the content length of the message can never be implied for requests

Implements pion::http::message.

void pion::http::request::set_content ( const std::string &  value)
inline
void pion::http::request::set_content ( const char *  value,
size_t  size 
)
inline

add content (for POST) from buffer of given size does nothing if the buffer is invalid or the buffer size is zero

References pion::http::message::create_content_buffer(), and pion::http::message::set_content_length().

void pion::http::request::set_method ( const std::string &  str)
inline

sets the HTTP request method (i.e. GET, POST, PUT)

References pion::http::message::clear_first_line().

Referenced by pion::http::parser::update_message_with_header_data(), and use_query_params_for_post_content().

void pion::http::request::set_query_string ( const std::string &  str)
inline
void pion::http::request::set_resource ( const std::string &  str)
inline

sets the resource or uri-stem originally requested

References pion::http::message::clear_first_line().

Referenced by pion::http::parser::update_message_with_header_data().

void pion::http::request::set_user ( user_ptr  user)
inline

sets the user record for HTTP request after authentication

virtual void pion::http::request::update_first_line ( void  ) const
inlineprotectedvirtual

updates the string containing the first line for the HTTP message

Implements pion::http::message.

References pion::http::message::get_version_string(), and pion::http::message::m_first_line.

void pion::http::request::use_query_params_for_post_content ( void  )
inline
void pion::http::request::use_query_params_for_query_string ( void  )
inline

use the query parameters to build a query string for the request

References pion::http::types::make_query_string(), and set_query_string().


The documentation for this class was generated from the following file: