/usr/share/doc/libpion-doc/html/request_8hpp_source.html is in libpion-doc 5.0.4+dfsg-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>pion: include/pion/http/request.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File List</span></a></li>
</ul>
</div>
<h1>include/pion/http/request.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// ---------------------------------------------------------------------</span>
<a name="l00002"></a>00002 <span class="comment">// pion: a Boost C++ framework for building lightweight HTTP interfaces</span>
<a name="l00003"></a>00003 <span class="comment">// ---------------------------------------------------------------------</span>
<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2012 Cloudmeter, Inc. (http://www.cloudmeter.com)</span>
<a name="l00005"></a>00005 <span class="comment">//</span>
<a name="l00006"></a>00006 <span class="comment">// Distributed under the Boost Software License, Version 1.0.</span>
<a name="l00007"></a>00007 <span class="comment">// See http://www.boost.org/LICENSE_1_0.txt</span>
<a name="l00008"></a>00008 <span class="comment">//</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#ifndef __PION_HTTP_REQUEST_HEADER__</span>
<a name="l00011"></a>00011 <span class="preprocessor"></span><span class="preprocessor">#define __PION_HTTP_REQUEST_HEADER__</span>
<a name="l00012"></a>00012 <span class="preprocessor"></span>
<a name="l00013"></a>00013 <span class="preprocessor">#include <boost/shared_ptr.hpp></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <pion/config.hpp></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <pion/http/message.hpp></span>
<a name="l00016"></a>00016 <span class="preprocessor">#include <pion/user.hpp></span>
<a name="l00017"></a>00017
<a name="l00018"></a>00018
<a name="l00019"></a>00019 <span class="keyword">namespace </span>pion { <span class="comment">// begin namespace pion</span>
<a name="l00020"></a>00020 <span class="keyword">namespace </span>http { <span class="comment">// begin namespace http</span>
<a name="l00021"></a>00021
<a name="l00022"></a>00022
<a name="l00026"></a><a class="code" href="classpion_1_1http_1_1request.html">00026</a> <span class="keyword">class </span><a class="code" href="classpion_1_1http_1_1request.html">request</a>
<a name="l00027"></a>00027 : <span class="keyword">public</span> http::<a class="code" href="classpion_1_1http_1_1message.html">message</a>
<a name="l00028"></a>00028 {
<a name="l00029"></a>00029 <span class="keyword">public</span>:
<a name="l00030"></a>00030
<a name="l00036"></a><a class="code" href="classpion_1_1http_1_1request.html#a186975ae3a5cb72c0faeb0f8f66ce594">00036</a> <a class="code" href="classpion_1_1http_1_1request.html#a4cf48bf36c01ed7899b72784e01adf83" title="constructs a new request object (default constructor)">request</a>(<span class="keyword">const</span> std::string& resource)
<a name="l00037"></a>00037 : m_method(REQUEST_METHOD_GET), m_resource(resource) {}
<a name="l00038"></a>00038
<a name="l00040"></a><a class="code" href="classpion_1_1http_1_1request.html#a4cf48bf36c01ed7899b72784e01adf83">00040</a> <a class="code" href="classpion_1_1http_1_1request.html#a4cf48bf36c01ed7899b72784e01adf83" title="constructs a new request object (default constructor)">request</a>(<span class="keywordtype">void</span>) : m_method(REQUEST_METHOD_GET) {}
<a name="l00041"></a>00041
<a name="l00043"></a><a class="code" href="classpion_1_1http_1_1request.html#a6b8d3e709899131b6d23ce623af4a7d3">00043</a> <span class="keyword">virtual</span> <a class="code" href="classpion_1_1http_1_1request.html#a6b8d3e709899131b6d23ce623af4a7d3" title="virtual destructor">~request</a>() {}
<a name="l00044"></a>00044
<a name="l00046"></a><a class="code" href="classpion_1_1http_1_1request.html#a820ac867130387a16859a6cf9ca77c74">00046</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classpion_1_1http_1_1request.html#a820ac867130387a16859a6cf9ca77c74" title="clears all request data">clear</a>(<span class="keywordtype">void</span>) {
<a name="l00047"></a>00047 <a class="code" href="classpion_1_1http_1_1request.html#a820ac867130387a16859a6cf9ca77c74" title="clears all request data">http::message::clear</a>();
<a name="l00048"></a>00048 m_method.erase();
<a name="l00049"></a>00049 m_resource.erase();
<a name="l00050"></a>00050 m_original_resource.erase();
<a name="l00051"></a>00051 m_query_string.erase();
<a name="l00052"></a>00052 m_query_params.clear();
<a name="l00053"></a>00053 m_user_record.reset();
<a name="l00054"></a>00054 }
<a name="l00055"></a>00055
<a name="l00057"></a><a class="code" href="classpion_1_1http_1_1request.html#a9ec7262ec35b4282ea66cf07e49fd4fb">00057</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classpion_1_1http_1_1request.html#a9ec7262ec35b4282ea66cf07e49fd4fb" title="the content length of the message can never be implied for requests">is_content_length_implied</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">false</span>; }
<a name="l00058"></a>00058
<a name="l00060"></a><a class="code" href="classpion_1_1http_1_1request.html#a43fa910a94a42fe8b26700a94ab9c3c2">00060</a> <span class="keyword">inline</span> <span class="keyword">const</span> std::string& <a class="code" href="classpion_1_1http_1_1request.html#a43fa910a94a42fe8b26700a94ab9c3c2" title="returns the request method (i.e. GET, POST, PUT)">get_method</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_method; }
<a name="l00061"></a>00061
<a name="l00063"></a><a class="code" href="classpion_1_1http_1_1request.html#a929787cdfb1a8cca18c1971e3cfc5d54">00063</a> <span class="keyword">inline</span> <span class="keyword">const</span> std::string& <a class="code" href="classpion_1_1http_1_1request.html#a929787cdfb1a8cca18c1971e3cfc5d54" title="returns the resource uri-stem to be delivered (possibly the result of a redirect)...">get_resource</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_resource; }
<a name="l00064"></a>00064
<a name="l00066"></a><a class="code" href="classpion_1_1http_1_1request.html#a79e8400cd9f7b956a4116b9bf218486b">00066</a> <span class="keyword">inline</span> <span class="keyword">const</span> std::string& <a class="code" href="classpion_1_1http_1_1request.html#a79e8400cd9f7b956a4116b9bf218486b" title="returns the resource uri-stem originally requested">get_original_resource</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_original_resource; }
<a name="l00067"></a>00067
<a name="l00069"></a><a class="code" href="classpion_1_1http_1_1request.html#a0a4f0e3f4ee577db353a55524efb3526">00069</a> <span class="keyword">inline</span> <span class="keyword">const</span> std::string& <a class="code" href="classpion_1_1http_1_1request.html#a0a4f0e3f4ee577db353a55524efb3526" title="returns the uri-query or query string requested">get_query_string</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_query_string; }
<a name="l00070"></a>00070
<a name="l00072"></a><a class="code" href="classpion_1_1http_1_1request.html#aee545d0144035125655d0a4de441820a">00072</a> <span class="keyword">inline</span> <span class="keyword">const</span> std::string& <a class="code" href="classpion_1_1http_1_1request.html#aee545d0144035125655d0a4de441820a" title="returns a value for the query key if any are defined; otherwise, an empty string">get_query</a>(<span class="keyword">const</span> std::string& key)<span class="keyword"> const </span>{
<a name="l00073"></a>00073 <span class="keywordflow">return</span> <a class="code" href="classpion_1_1http_1_1message.html#ada83b932a271cedc95a8318c6822360b">get_value</a>(m_query_params, key);
<a name="l00074"></a>00074 }
<a name="l00075"></a>00075
<a name="l00077"></a><a class="code" href="classpion_1_1http_1_1request.html#a2e75b875b0858057b6b4bd6255f7424f">00077</a> <span class="keyword">inline</span> ihash_multimap& <a class="code" href="classpion_1_1http_1_1request.html#a2e75b875b0858057b6b4bd6255f7424f" title="returns the query parameters">get_queries</a>(<span class="keywordtype">void</span>) {
<a name="l00078"></a>00078 <span class="keywordflow">return</span> m_query_params;
<a name="l00079"></a>00079 }
<a name="l00080"></a>00080
<a name="l00082"></a><a class="code" href="classpion_1_1http_1_1request.html#ac0da1fdcb02cf58ab0391d9f7955aeab">00082</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classpion_1_1http_1_1request.html#ac0da1fdcb02cf58ab0391d9f7955aeab" title="returns true if at least one value for the query key is defined">has_query</a>(<span class="keyword">const</span> std::string& key)<span class="keyword"> const </span>{
<a name="l00083"></a>00083 <span class="keywordflow">return</span>(m_query_params.find(key) != m_query_params.end());
<a name="l00084"></a>00084 }
<a name="l00085"></a>00085
<a name="l00087"></a><a class="code" href="classpion_1_1http_1_1request.html#a0878aad94ef74810b8df2670a17c22b2">00087</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classpion_1_1http_1_1request.html#a0878aad94ef74810b8df2670a17c22b2" title="sets the HTTP request method (i.e. GET, POST, PUT)">set_method</a>(<span class="keyword">const</span> std::string& str) {
<a name="l00088"></a>00088 m_method = str;
<a name="l00089"></a>00089 <a class="code" href="classpion_1_1http_1_1message.html#ab47dc3343c9b2cbc7fdf8605e4b7d3b2">clear_first_line</a>();
<a name="l00090"></a>00090 }
<a name="l00091"></a>00091
<a name="l00093"></a><a class="code" href="classpion_1_1http_1_1request.html#a421f57b069fd2442397dbcdb8c382a87">00093</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classpion_1_1http_1_1request.html#a421f57b069fd2442397dbcdb8c382a87" title="sets the resource or uri-stem originally requested">set_resource</a>(<span class="keyword">const</span> std::string& str) {
<a name="l00094"></a>00094 m_resource = m_original_resource = str;
<a name="l00095"></a>00095 <a class="code" href="classpion_1_1http_1_1message.html#ab47dc3343c9b2cbc7fdf8605e4b7d3b2">clear_first_line</a>();
<a name="l00096"></a>00096 }
<a name="l00097"></a>00097
<a name="l00099"></a><a class="code" href="classpion_1_1http_1_1request.html#a2e0eff2dbba55adc260b13a8be013e8c">00099</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classpion_1_1http_1_1request.html#a2e0eff2dbba55adc260b13a8be013e8c" title="changes the resource or uri-stem to be delivered (called as the result of a redirect)...">change_resource</a>(<span class="keyword">const</span> std::string& str) { m_resource = str; }
<a name="l00100"></a>00100
<a name="l00102"></a><a class="code" href="classpion_1_1http_1_1request.html#adbcb876e6bf19efb6a84802d90347e2b">00102</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classpion_1_1http_1_1request.html#adbcb876e6bf19efb6a84802d90347e2b" title="sets the uri-query or query string requested">set_query_string</a>(<span class="keyword">const</span> std::string& str) {
<a name="l00103"></a>00103 m_query_string = str;
<a name="l00104"></a>00104 <a class="code" href="classpion_1_1http_1_1message.html#ab47dc3343c9b2cbc7fdf8605e4b7d3b2">clear_first_line</a>();
<a name="l00105"></a>00105 }
<a name="l00106"></a>00106
<a name="l00108"></a><a class="code" href="classpion_1_1http_1_1request.html#a4167f9aed250f3f7cb6d935b5787bbba">00108</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classpion_1_1http_1_1request.html#a4167f9aed250f3f7cb6d935b5787bbba" title="adds a value for the query key">add_query</a>(<span class="keyword">const</span> std::string& key, <span class="keyword">const</span> std::string& value) {
<a name="l00109"></a>00109 m_query_params.insert(std::make_pair(key, value));
<a name="l00110"></a>00110 }
<a name="l00111"></a>00111
<a name="l00113"></a><a class="code" href="classpion_1_1http_1_1request.html#a5bc1d88faa0f3bb054f32c7ff0257f3b">00113</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classpion_1_1http_1_1request.html#a5bc1d88faa0f3bb054f32c7ff0257f3b" title="changes the value of a query key">change_query</a>(<span class="keyword">const</span> std::string& key, <span class="keyword">const</span> std::string& value) {
<a name="l00114"></a>00114 <a class="code" href="classpion_1_1http_1_1message.html#a71e183f222d96cdf51ff8d2c773a59d2">change_value</a>(m_query_params, key, value);
<a name="l00115"></a>00115 }
<a name="l00116"></a>00116
<a name="l00118"></a><a class="code" href="classpion_1_1http_1_1request.html#acfcd67cdc0c390f3c264935718fe0b57">00118</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classpion_1_1http_1_1request.html#acfcd67cdc0c390f3c264935718fe0b57" title="removes all values for a query key">delete_query</a>(<span class="keyword">const</span> std::string& key) {
<a name="l00119"></a>00119 <a class="code" href="classpion_1_1http_1_1message.html#ace95da93ea1a4488f927e9340f2d3f53">delete_value</a>(m_query_params, key);
<a name="l00120"></a>00120 }
<a name="l00121"></a>00121
<a name="l00123"></a><a class="code" href="classpion_1_1http_1_1request.html#aa3dd2b6074201004ea631051367b21d7">00123</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classpion_1_1http_1_1request.html#aa3dd2b6074201004ea631051367b21d7" title="use the query parameters to build a query string for the request">use_query_params_for_query_string</a>(<span class="keywordtype">void</span>) {
<a name="l00124"></a>00124 <a class="code" href="classpion_1_1http_1_1request.html#adbcb876e6bf19efb6a84802d90347e2b" title="sets the uri-query or query string requested">set_query_string</a>(<a class="code" href="structpion_1_1http_1_1types.html#aa8d84f3f7199fc20715d67d096ecfa9b" title="builds an HTTP query string from a collection of query parameters">make_query_string</a>(m_query_params));
<a name="l00125"></a>00125 }
<a name="l00126"></a>00126
<a name="l00128"></a><a class="code" href="classpion_1_1http_1_1request.html#abb1410c7dbbdc3a18997ee2486585106">00128</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classpion_1_1http_1_1request.html#abb1410c7dbbdc3a18997ee2486585106" title="use the query parameters to build POST content for the request">use_query_params_for_post_content</a>(<span class="keywordtype">void</span>) {
<a name="l00129"></a>00129 std::string post_content(<a class="code" href="structpion_1_1http_1_1types.html#aa8d84f3f7199fc20715d67d096ecfa9b" title="builds an HTTP query string from a collection of query parameters">make_query_string</a>(m_query_params));
<a name="l00130"></a>00130 <a class="code" href="classpion_1_1http_1_1message.html#acf2530382367549fb83fe2f3c6fac687" title="sets the length of the payload content (in bytes)">set_content_length</a>(post_content.size());
<a name="l00131"></a>00131 <span class="keywordtype">char</span> *ptr = <a class="code" href="classpion_1_1http_1_1message.html#a468f42e5bc2866d9c93138e3a4cec31b">create_content_buffer</a>(); <span class="comment">// null-terminates buffer</span>
<a name="l00132"></a>00132 <span class="keywordflow">if</span> (! post_content.empty())
<a name="l00133"></a>00133 memcpy(ptr, post_content.c_str(), post_content.size());
<a name="l00134"></a>00134 <a class="code" href="classpion_1_1http_1_1request.html#a0878aad94ef74810b8df2670a17c22b2" title="sets the HTTP request method (i.e. GET, POST, PUT)">set_method</a>(REQUEST_METHOD_POST);
<a name="l00135"></a>00135 <a class="code" href="classpion_1_1http_1_1message.html#add4f889bb2d22e163556c2fd5fd993a8" title="sets the content type for the message payload">set_content_type</a>(CONTENT_TYPE_URLENCODED);
<a name="l00136"></a>00136 }
<a name="l00137"></a>00137
<a name="l00139"></a><a class="code" href="classpion_1_1http_1_1request.html#a343d9892b3a658acd3a28eadb908748d">00139</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classpion_1_1http_1_1request.html#a343d9892b3a658acd3a28eadb908748d" title="add content (for POST) from string">set_content</a>(<span class="keyword">const</span> std::string &value) {
<a name="l00140"></a>00140 <a class="code" href="classpion_1_1http_1_1message.html#acf2530382367549fb83fe2f3c6fac687" title="sets the length of the payload content (in bytes)">set_content_length</a>(value.size());
<a name="l00141"></a>00141 <span class="keywordtype">char</span> *ptr = <a class="code" href="classpion_1_1http_1_1message.html#a468f42e5bc2866d9c93138e3a4cec31b">create_content_buffer</a>();
<a name="l00142"></a>00142 <span class="keywordflow">if</span> (! value.empty())
<a name="l00143"></a>00143 memcpy(ptr, value.c_str(), value.size());
<a name="l00144"></a>00144 }
<a name="l00145"></a>00145
<a name="l00148"></a><a class="code" href="classpion_1_1http_1_1request.html#a32575a6e5a38592d986822557fd1cf40">00148</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classpion_1_1http_1_1request.html#a32575a6e5a38592d986822557fd1cf40">set_content</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* value, <span class="keyword">const</span> boost::uint64_t& size) {
<a name="l00149"></a>00149 <span class="keywordflow">if</span> ( NULL == value || 0 == size )
<a name="l00150"></a>00150 <span class="keywordflow">return</span>;
<a name="l00151"></a>00151 <a class="code" href="classpion_1_1http_1_1message.html#acf2530382367549fb83fe2f3c6fac687" title="sets the length of the payload content (in bytes)">set_content_length</a>(size);
<a name="l00152"></a>00152 <span class="keywordtype">char</span> *ptr = <a class="code" href="classpion_1_1http_1_1message.html#a468f42e5bc2866d9c93138e3a4cec31b">create_content_buffer</a>();
<a name="l00153"></a>00153 memcpy(ptr, value, size);
<a name="l00154"></a>00154 }
<a name="l00155"></a>00155
<a name="l00157"></a><a class="code" href="classpion_1_1http_1_1request.html#abe13dc66982da6ab6cc08ff68710d4af">00157</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classpion_1_1http_1_1request.html#abe13dc66982da6ab6cc08ff68710d4af" title="sets the user record for HTTP request after authentication">set_user</a>(user_ptr <a class="code" href="classpion_1_1user.html">user</a>) { m_user_record = user; }
<a name="l00158"></a>00158
<a name="l00160"></a><a class="code" href="classpion_1_1http_1_1request.html#a0c525f2d99bad69e67353cb2478c6b74">00160</a> <span class="keyword">inline</span> user_ptr <a class="code" href="classpion_1_1http_1_1request.html#a0c525f2d99bad69e67353cb2478c6b74" title="get the user record for HTTP request after authentication">get_user</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_user_record; }
<a name="l00161"></a>00161
<a name="l00162"></a>00162
<a name="l00163"></a>00163 <span class="keyword">protected</span>:
<a name="l00164"></a>00164
<a name="l00166"></a><a class="code" href="classpion_1_1http_1_1request.html#a48f4d55f5be5e6bed2936ad8efa8b8ff">00166</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classpion_1_1http_1_1request.html#a48f4d55f5be5e6bed2936ad8efa8b8ff" title="updates the string containing the first line for the HTTP message">update_first_line</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{
<a name="l00167"></a>00167 <span class="comment">// start out with the request method</span>
<a name="l00168"></a>00168 <a class="code" href="classpion_1_1http_1_1message.html#ad97c570395428af30074bd1b75672125">m_first_line</a> = m_method;
<a name="l00169"></a>00169 <a class="code" href="classpion_1_1http_1_1message.html#ad97c570395428af30074bd1b75672125">m_first_line</a> += <span class="charliteral">' '</span>;
<a name="l00170"></a>00170 <span class="comment">// append the resource requested</span>
<a name="l00171"></a>00171 <a class="code" href="classpion_1_1http_1_1message.html#ad97c570395428af30074bd1b75672125">m_first_line</a> += m_resource;
<a name="l00172"></a>00172 <span class="keywordflow">if</span> (! m_query_string.empty()) {
<a name="l00173"></a>00173 <span class="comment">// append query string if not empty</span>
<a name="l00174"></a>00174 <a class="code" href="classpion_1_1http_1_1message.html#ad97c570395428af30074bd1b75672125">m_first_line</a> += <span class="charliteral">'?'</span>;
<a name="l00175"></a>00175 <a class="code" href="classpion_1_1http_1_1message.html#ad97c570395428af30074bd1b75672125">m_first_line</a> += m_query_string;
<a name="l00176"></a>00176 }
<a name="l00177"></a>00177 <a class="code" href="classpion_1_1http_1_1message.html#ad97c570395428af30074bd1b75672125">m_first_line</a> += <span class="charliteral">' '</span>;
<a name="l00178"></a>00178 <span class="comment">// append HTTP version</span>
<a name="l00179"></a>00179 <a class="code" href="classpion_1_1http_1_1message.html#ad97c570395428af30074bd1b75672125">m_first_line</a> += <a class="code" href="classpion_1_1http_1_1message.html#a0bb6e14bd27dc1b956bb74dcccc7ee27" title="returns a string representation of the HTTP version (i.e. &quot;HTTP/1.1&quot;)">get_version_string</a>();
<a name="l00180"></a>00180 }
<a name="l00181"></a>00181
<a name="l00183"></a><a class="code" href="classpion_1_1http_1_1request.html#a17fbce903b00388346ad85e8b3d997b3">00183</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classpion_1_1http_1_1request.html#a17fbce903b00388346ad85e8b3d997b3" title="appends HTTP headers for any cookies defined by the http::message">append_cookie_headers</a>(<span class="keywordtype">void</span>) {
<a name="l00184"></a>00184 <span class="keywordflow">for</span> (ihash_multimap::const_iterator i = <a class="code" href="classpion_1_1http_1_1message.html#ab5e744890af0936eda97c21888bb4a2e" title="returns the cookie parameters">get_cookies</a>().begin(); i != <a class="code" href="classpion_1_1http_1_1message.html#ab5e744890af0936eda97c21888bb4a2e" title="returns the cookie parameters">get_cookies</a>().end(); ++i) {
<a name="l00185"></a>00185 std::string cookie_header;
<a name="l00186"></a>00186 cookie_header = i->first;
<a name="l00187"></a>00187 cookie_header += COOKIE_NAME_VALUE_DELIMITER;
<a name="l00188"></a>00188 cookie_header += i->second;
<a name="l00189"></a>00189 <a class="code" href="classpion_1_1http_1_1message.html#a115c9657c4933f034dcf2f4ce7bd55f0" title="adds a value for the HTTP header named key">add_header</a>(HEADER_COOKIE, cookie_header);
<a name="l00190"></a>00190 }
<a name="l00191"></a>00191 }
<a name="l00192"></a>00192
<a name="l00193"></a>00193
<a name="l00194"></a>00194 <span class="keyword">private</span>:
<a name="l00195"></a>00195
<a name="l00197"></a>00197 std::string m_method;
<a name="l00198"></a>00198
<a name="l00200"></a>00200 std::string m_resource;
<a name="l00201"></a>00201
<a name="l00203"></a>00203 std::string m_original_resource;
<a name="l00204"></a>00204
<a name="l00206"></a>00206 std::string m_query_string;
<a name="l00207"></a>00207
<a name="l00209"></a>00209 ihash_multimap m_query_params;
<a name="l00210"></a>00210
<a name="l00212"></a>00212 user_ptr m_user_record;
<a name="l00213"></a>00213 };
<a name="l00214"></a>00214
<a name="l00215"></a>00215
<a name="l00217"></a>00217 <span class="keyword">typedef</span> boost::shared_ptr<request> request_ptr;
<a name="l00218"></a>00218
<a name="l00219"></a>00219
<a name="l00220"></a>00220 } <span class="comment">// end namespace http</span>
<a name="l00221"></a>00221 } <span class="comment">// end namespace pion</span>
<a name="l00222"></a>00222
<a name="l00223"></a>00223 <span class="preprocessor">#endif</span>
</pre></div></div>
<hr size="1"/><address style="text-align: right;"><small>Generated on 16 Sep 2013 for pion by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>
|