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

#include <response.hpp>

Inheritance diagram for pion::http::response:
Collaboration diagram for pion::http::response:

Public Member Functions

 response (const http::request &http_request_ptr)
 
 response (const std::string &request_method)
 
 response (const response &http_response)
 copy constructor More...
 
 response (void)
 
virtual ~response ()
 virtual destructor More...
 
virtual void clear (void)
 clears all response data More...
 
virtual bool is_content_length_implied (void) const
 the content length may be implied for certain types of responses More...
 
void update_request_info (const http::request &http_request)
 
void set_status_code (unsigned int n)
 sets the HTTP response status code More...
 
void set_status_message (const std::string &msg)
 sets the HTTP response status message More...
 
unsigned int get_status_code (void) const
 returns the HTTP response status code More...
 
const std::string & get_status_message (void) const
 returns the HTTP response status message More...
 
void set_cookie (const std::string &name, const std::string &value)
 
void set_cookie (const std::string &name, const std::string &value, const std::string &path)
 
void set_cookie (const std::string &name, const std::string &value, const std::string &path, const unsigned long max_age)
 
void set_cookie (const std::string &name, const std::string &value, const unsigned long max_age)
 
void delete_cookie (const std::string &name)
 deletes cookie called name by adding a Set-Cookie header (cookie has no path) More...
 
void delete_cookie (const std::string &name, const std::string &path)
 deletes cookie called name by adding a Set-Cookie header (cookie has a path) More...
 
void set_last_modified (const unsigned long t)
 sets the time that the response was last modified (Last-Modified) 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

response: container for HTTP response information

Constructor & Destructor Documentation

pion::http::response::response ( const http::request http_request_ptr)
inline

constructs a new response object for a particular request

Parameters
http_request_ptrthe request that this is responding to

References update_request_info().

pion::http::response::response ( const std::string &  request_method)
inline

constructs a new response object for a particular request method

Parameters
request_methodthe method used by the HTTP request we are responding to
pion::http::response::response ( const response http_response)
inline

copy constructor

pion::http::response::response ( void  )
inline

default constructor: you are strongly encouraged to use one of the other constructors, since response parsing is influenced by the request method

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

virtual destructor

Member Function Documentation

virtual void pion::http::response::append_cookie_headers ( void  )
inlineprotectedvirtual

appends HTTP headers for any cookies defined by the http::message

Reimplemented from pion::http::message.

References pion::http::message::get_cookies(), and set_cookie().

virtual void pion::http::response::clear ( void  )
inlinevirtual
void pion::http::response::delete_cookie ( const std::string &  name)
inline

deletes cookie called name by adding a Set-Cookie header (cookie has no path)

References pion::http::message::add_header(), pion::http::types::HEADER_SET_COOKIE, and pion::http::types::make_set_cookie_header().

void pion::http::response::delete_cookie ( const std::string &  name,
const std::string &  path 
)
inline

deletes cookie called name by adding a Set-Cookie header (cookie has a path)

References pion::http::message::add_header(), pion::http::types::HEADER_SET_COOKIE, and pion::http::types::make_set_cookie_header().

unsigned int pion::http::response::get_status_code ( void  ) const
inline

returns the HTTP response status code

const std::string& pion::http::response::get_status_message ( void  ) const
inline

returns the HTTP response status message

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

the content length may be implied for certain types of responses

Implements pion::http::message.

References pion::http::types::REQUEST_METHOD_HEAD.

void pion::http::response::set_cookie ( const std::string &  name,
const std::string &  value 
)
inline

sets a cookie by adding a Set-Cookie header (see RFC 2109) the cookie will be discarded by the user-agent when it closes

Parameters
namethe name of the cookie
valuethe value of the cookie

References pion::http::message::add_header(), pion::http::types::HEADER_SET_COOKIE, and pion::http::types::make_set_cookie_header().

Referenced by append_cookie_headers().

void pion::http::response::set_cookie ( const std::string &  name,
const std::string &  value,
const std::string &  path 
)
inline

sets a cookie by adding a Set-Cookie header (see RFC 2109) the cookie will be discarded by the user-agent when it closes

Parameters
namethe name of the cookie
valuethe value of the cookie
paththe path of the cookie

References pion::http::message::add_header(), pion::http::types::HEADER_SET_COOKIE, and pion::http::types::make_set_cookie_header().

void pion::http::response::set_cookie ( const std::string &  name,
const std::string &  value,
const std::string &  path,
const unsigned long  max_age 
)
inline

sets a cookie by adding a Set-Cookie header (see RFC 2109)

Parameters
namethe name of the cookie
valuethe value of the cookie
paththe path of the cookie
max_agethe life of the cookie, in seconds (0 = discard)

References pion::http::message::add_header(), pion::http::types::HEADER_SET_COOKIE, and pion::http::types::make_set_cookie_header().

void pion::http::response::set_cookie ( const std::string &  name,
const std::string &  value,
const unsigned long  max_age 
)
inline

sets a cookie by adding a Set-Cookie header (see RFC 2109)

Parameters
namethe name of the cookie
valuethe value of the cookie
max_agethe life of the cookie, in seconds (0 = discard)

References pion::http::message::add_header(), pion::http::types::HEADER_SET_COOKIE, and pion::http::types::make_set_cookie_header().

void pion::http::response::set_last_modified ( const unsigned long  t)
inline

sets the time that the response was last modified (Last-Modified)

References pion::http::message::change_header(), pion::http::types::get_date_string(), and pion::http::types::HEADER_LAST_MODIFIED.

void pion::http::response::set_status_code ( unsigned int  n)
inline
void pion::http::response::set_status_message ( const std::string &  msg)
inline
virtual void pion::http::response::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::response::update_request_info ( const http::request http_request)
inline

Updates HTTP request information for the response object (use this if the response cannot be constructed using the request)

Parameters
http_requestthe request that this is responding to

References pion::http::request::get_method(), pion::http::message::get_version_major(), pion::http::message::get_version_minor(), pion::http::message::set_chunks_supported(), set_status_code(), set_status_message(), pion::http::message::set_version_major(), and pion::http::message::set_version_minor().

Referenced by response().


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