00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 #ifndef __PION_HTTP_TYPES_HEADER__
00011 #define __PION_HTTP_TYPES_HEADER__
00012 
00013 #include <string>
00014 #include <pion/config.hpp>
00015 #include <pion/hash_map.hpp>
00016 
00017 
00018 namespace pion {    
00019 namespace http {    
00020 
00021 
00025 struct PION_API types
00026 {
00028     virtual ~types() {}
00029     
00030     
00031     static const std::string    STRING_EMPTY;
00032     static const std::string    STRING_CRLF;
00033     static const std::string    STRING_HTTP_VERSION;
00034     static const std::string    HEADER_NAME_VALUE_DELIMITER;
00035     static const std::string    COOKIE_NAME_VALUE_DELIMITER;
00036     
00037     
00038     static const std::string    HEADER_HOST;
00039     static const std::string    HEADER_COOKIE;
00040     static const std::string    HEADER_SET_COOKIE;
00041     static const std::string    HEADER_CONNECTION;
00042     static const std::string    HEADER_CONTENT_TYPE;
00043     static const std::string    HEADER_CONTENT_LENGTH;
00044     static const std::string    HEADER_CONTENT_LOCATION;
00045     static const std::string    HEADER_CONTENT_ENCODING;
00046     static const std::string    HEADER_CONTENT_DISPOSITION;
00047     static const std::string    HEADER_LAST_MODIFIED;
00048     static const std::string    HEADER_IF_MODIFIED_SINCE;
00049     static const std::string    HEADER_TRANSFER_ENCODING;
00050     static const std::string    HEADER_LOCATION;
00051     static const std::string    HEADER_AUTHORIZATION;
00052     static const std::string    HEADER_REFERER;
00053     static const std::string    HEADER_USER_AGENT;
00054     static const std::string    HEADER_X_FORWARDED_FOR;
00055     static const std::string    HEADER_CLIENT_IP;
00056 
00057     
00058     static const std::string    CONTENT_TYPE_HTML;
00059     static const std::string    CONTENT_TYPE_TEXT;
00060     static const std::string    CONTENT_TYPE_XML;
00061     static const std::string    CONTENT_TYPE_URLENCODED;
00062     static const std::string    CONTENT_TYPE_MULTIPART_FORM_DATA;
00063     
00064     
00065     static const std::string    REQUEST_METHOD_HEAD;
00066     static const std::string    REQUEST_METHOD_GET;
00067     static const std::string    REQUEST_METHOD_PUT;
00068     static const std::string    REQUEST_METHOD_POST;
00069     static const std::string    REQUEST_METHOD_DELETE;
00070     
00071     
00072     static const std::string    RESPONSE_MESSAGE_OK;
00073     static const std::string    RESPONSE_MESSAGE_CREATED;
00074     static const std::string    RESPONSE_MESSAGE_ACCEPTED;
00075     static const std::string    RESPONSE_MESSAGE_NO_CONTENT;
00076     static const std::string    RESPONSE_MESSAGE_FOUND;
00077     static const std::string    RESPONSE_MESSAGE_UNAUTHORIZED;
00078     static const std::string    RESPONSE_MESSAGE_FORBIDDEN;
00079     static const std::string    RESPONSE_MESSAGE_NOT_FOUND;
00080     static const std::string    RESPONSE_MESSAGE_METHOD_NOT_ALLOWED;
00081     static const std::string    RESPONSE_MESSAGE_NOT_MODIFIED;
00082     static const std::string    RESPONSE_MESSAGE_BAD_REQUEST;
00083     static const std::string    RESPONSE_MESSAGE_SERVER_ERROR;
00084     static const std::string    RESPONSE_MESSAGE_NOT_IMPLEMENTED;
00085     static const std::string    RESPONSE_MESSAGE_CONTINUE;
00086 
00087     
00088     static const unsigned int   RESPONSE_CODE_OK;
00089     static const unsigned int   RESPONSE_CODE_CREATED;
00090     static const unsigned int   RESPONSE_CODE_ACCEPTED;
00091     static const unsigned int   RESPONSE_CODE_NO_CONTENT;
00092     static const unsigned int   RESPONSE_CODE_FOUND;
00093     static const unsigned int   RESPONSE_CODE_UNAUTHORIZED;
00094     static const unsigned int   RESPONSE_CODE_FORBIDDEN;
00095     static const unsigned int   RESPONSE_CODE_NOT_FOUND;
00096     static const unsigned int   RESPONSE_CODE_METHOD_NOT_ALLOWED;
00097     static const unsigned int   RESPONSE_CODE_NOT_MODIFIED;
00098     static const unsigned int   RESPONSE_CODE_BAD_REQUEST;
00099     static const unsigned int   RESPONSE_CODE_SERVER_ERROR;
00100     static const unsigned int   RESPONSE_CODE_NOT_IMPLEMENTED;
00101     static const unsigned int   RESPONSE_CODE_CONTINUE;
00102     
00103 
00105     static std::string get_date_string(const time_t t);
00106 
00108     static std::string make_query_string(const ihash_multimap& query_params);
00109     
00121     static std::string make_set_cookie_header(const std::string& name,
00122                                               const std::string& value,
00123                                               const std::string& path,
00124                                               const bool has_max_age = false,
00125                                               const unsigned long max_age = 0);     
00126 };
00127 
00128 
00129 }   
00130 }   
00131 
00132 #endif