HttpRequest Class Reference#include <HttpRequest.h>
Inheritance diagram for HttpRequest:
![]()
Collaboration diagram for HttpRequest:
![]()
Detailed DescriptionDefinition at line 48 of file HttpRequest.h. Constructor & Destructor Documentation
Definition at line 55 of file HttpRequest.cpp. 00055 : HttpTransaction() 00056 , m_server_port(0) 00057 , m_is_ssl(false) 00058 , m_body_file(NULL) 00059 , m_form(NULL) 00060 { 00061 }
Create from plain old cgi request.
Definition at line 66 of file HttpRequest.cpp. References DEB, Parse::getrest(), Parse::getword(), m_form, m_method, m_protocol, m_remote_addr, m_remote_host, m_req_uri, m_server_name, m_server_port, and HttpTransaction::SetHeader(). 00066 : HttpTransaction() 00067 , m_server_port(0) 00068 , m_is_ssl(false) 00069 , m_body_file(NULL) 00070 , m_form(NULL) 00071 { 00072 int i = 0; 00073 DEB( std::cout << "Initialize HttpRequest from cgi...\n";) 00074 while (environ[i] && *environ[i]) 00075 { 00076 Parse pa(environ[i], "="); 00077 std::string key = pa.getword(); 00078 std::string value = pa.getrest(); 00079 if (key == "REQUEST_METHOD") 00080 m_method = value; 00081 else 00082 if (key == "SERVER_PROTOCOL") 00083 m_protocol = value; 00084 else 00085 if (key == "PATH_INFO") 00086 m_req_uri = value; 00087 else 00088 if (key == "REMOTE_ADDR") 00089 m_remote_addr = value; 00090 else 00091 if (key == "REMOTE_HOST") 00092 m_remote_host = value; 00093 else 00094 if (key == "SERVER_NAME") 00095 m_server_name = value; 00096 else 00097 if (key == "SERVER_PORT") 00098 m_server_port = atoi(value.c_str()); 00099 else 00100 if (key.size() > 5 && key.substr(0, 5) == "HTTP_") 00101 { 00102 key = key.substr(5); 00103 for (size_t pos = 0; pos < key.size(); pos++) 00104 { 00105 if (key[pos] == '_') 00106 key[pos] = '-'; 00107 else 00108 if (key[pos] >= 'A' && key[pos] <= 'Z') 00109 key[pos] |= 32; 00110 } 00111 DEB( std::cout << " http header '" << key << "' == '" << value << "\n";) 00112 SetHeader(key, value); 00113 } 00114 ++i; 00115 } 00116 DEB( std::cout << " setup http form\n";) 00117 m_form = std::auto_ptr<HttpdForm>(new HttpdForm(fil)); 00118 }
Definition at line 123 of file HttpRequest.cpp. 00123 : HttpTransaction(src) 00124 , m_method(src.m_method) 00125 , m_protocol(src.m_protocol) 00126 , m_req_uri(src.m_req_uri) 00127 , m_remote_addr(src.m_remote_addr) 00128 , m_remote_host(src.m_remote_host) 00129 , m_server_name(src.m_server_name) 00130 , m_server_port(src.m_server_port) 00131 , m_is_ssl(src.m_is_ssl) 00132 , m_attribute(src.m_attribute) 00133 , m_null(src.m_null) 00134 , m_body_file(src.m_body_file) 00135 , m_form(src.m_form) 00136 , m_cookies(src.m_cookies) 00137 , m_cookie(src.m_cookie) 00138 { 00139 }
Member Function Documentation
Definition at line 149 of file HttpRequest.cpp. References m_attribute, m_body_file, m_cookie, m_cookies, m_form, m_is_ssl, m_method, m_null, m_protocol, m_remote_addr, m_remote_host, m_req_uri, m_server_name, and m_server_port. 00150 { 00151 m_method = src.m_method; 00152 m_protocol = src.m_protocol; 00153 m_req_uri = src.m_req_uri; 00154 m_remote_addr = src.m_remote_addr; 00155 m_remote_host = src.m_remote_host; 00156 m_server_name = src.m_server_name; 00157 m_server_port = src.m_server_port; 00158 m_is_ssl = src.m_is_ssl; 00159 m_attribute = src.m_attribute; 00160 m_null = src.m_null; 00161 m_body_file = src.m_body_file; 00162 m_form = src.m_form; 00163 m_cookies = src.m_cookies; 00164 m_cookie = src.m_cookie; 00165 00166 HttpTransaction::operator=(src); 00167 00168 return *this; 00169 }
Get, Post.
Definition at line 173 of file HttpRequest.cpp. References m_method. Referenced by HttpBaseSocket::OnFirst(), and Ajp13Socket::ReceiveForwardRequest(). 00174 { 00175 m_method = value; 00176 }
Definition at line 179 of file HttpRequest.cpp. References m_method. 00180 { 00181 return m_method; 00182 }
HTTP/1.x.
Definition at line 187 of file HttpRequest.cpp. References m_protocol. Referenced by HttpBaseSocket::OnFirst(), and Ajp13Socket::ReceiveForwardRequest(). 00188 { 00189 m_protocol = value; 00190 }
Definition at line 193 of file HttpRequest.cpp. References m_protocol. Referenced by HttpBaseSocket::Execute(). 00194 { 00195 return m_protocol; 00196 }
Definition at line 201 of file HttpRequest.cpp. References m_req_uri. Referenced by HttpBaseSocket::OnFirst(), and Ajp13Socket::ReceiveForwardRequest(). 00202 { 00203 m_req_uri = value; 00204 }
Definition at line 207 of file HttpRequest.cpp. References m_req_uri. 00208 { 00209 return m_req_uri; 00210 }
Definition at line 215 of file HttpRequest.cpp. References m_remote_addr. Referenced by HttpBaseSocket::OnFirst(), and Ajp13Socket::ReceiveForwardRequest(). 00216 { 00217 m_remote_addr = value; 00218 }
Definition at line 221 of file HttpRequest.cpp. References m_remote_addr. 00222 { 00223 return m_remote_addr; 00224 }
Definition at line 229 of file HttpRequest.cpp. References m_remote_host. Referenced by HttpBaseSocket::OnFirst(), and Ajp13Socket::ReceiveForwardRequest(). 00230 { 00231 m_remote_host = value; 00232 }
Definition at line 235 of file HttpRequest.cpp. References m_remote_host. 00236 { 00237 return m_remote_host; 00238 }
Definition at line 243 of file HttpRequest.cpp. References m_server_name. Referenced by HttpBaseSocket::OnFirst(), and Ajp13Socket::ReceiveForwardRequest(). 00244 { 00245 m_server_name = value; 00246 }
Definition at line 249 of file HttpRequest.cpp. References m_server_name. 00250 { 00251 return m_server_name; 00252 }
Definition at line 257 of file HttpRequest.cpp. References m_server_port. Referenced by HttpBaseSocket::OnFirst(), and Ajp13Socket::ReceiveForwardRequest(). 00258 { 00259 m_server_port = value; 00260 }
Definition at line 263 of file HttpRequest.cpp. References m_server_port. 00264 { 00265 return m_server_port; 00266 }
Definition at line 271 of file HttpRequest.cpp. References m_is_ssl. Referenced by Ajp13Socket::ReceiveForwardRequest(). 00272 { 00273 m_is_ssl = value; 00274 }
Definition at line 277 of file HttpRequest.cpp. References m_is_ssl. 00278 { 00279 return m_is_ssl; 00280 }
Set / Read attribute value.
Definition at line 285 of file HttpRequest.cpp. References m_attribute. Referenced by HttpBaseSocket::OnFirst(), and Ajp13Socket::ReceiveForwardRequest(). 00286 { 00287 m_attribute[key] = value; 00288 }
Definition at line 291 of file HttpRequest.cpp. References Utility::l2string(), and m_attribute. 00292 { 00293 m_attribute[key] = Utility::l2string(value); 00294 }
Definition at line 297 of file HttpRequest.cpp. References m_attribute, and m_null. 00298 { 00299 Utility::ncmap<std::string>::const_iterator it; 00300 if ( (it = m_attribute.find(key)) != m_attribute.end()) 00301 return it -> second; 00302 return m_null; 00303 }
Definition at line 307 of file HttpRequest.cpp. References m_attribute. 00308 { 00309 return m_attribute; 00310 }
Cookies.
Definition at line 314 of file HttpRequest.cpp. References HttpdCookies::add(), DEB, Parse::getword(), m_cookie, and m_cookies. Referenced by HttpBaseSocket::OnHeader(), and Ajp13Socket::ReceiveForwardRequest(). 00315 { 00316 m_cookies.add( str ); 00317 Parse pa(str, ";"); 00318 std::string lstr = pa.getword(); 00319 while (!lstr.empty()) 00320 { 00321 Parse pa2(lstr, "="); 00322 std::string name = pa2.getword(); 00323 m_cookie[name] = lstr; 00324 DEB(fprintf(stderr, " *** AddCookie '%s' = '%s'\n", name.c_str(), lstr.c_str());) 00325 lstr = pa.getword(); 00326 } 00327 }
Open file for body data.
Definition at line 331 of file HttpRequest.cpp. References DEB, and m_body_file. Referenced by HttpBaseSocket::OnHeaderComplete(), and Ajp13Socket::ReceiveForwardRequest(). 00332 { 00333 if (!m_body_file.get()) 00334 m_body_file = std::auto_ptr<IFile>(new MemFile); 00335 DEB( else 00336 fprintf(stderr, "Body data file already opened\n");) 00337 }
Write body data.
Definition at line 341 of file HttpRequest.cpp. References DEB, and m_body_file. Referenced by HttpBaseSocket::OnData(), and Ajp13Socket::ReceiveBody(). 00342 { 00343 if (m_body_file.get()) 00344 m_body_file -> fwrite(buf, 1, sz); 00345 DEB( else 00346 fprintf(stderr, "Write: Body data file not open\n");) 00347 }
No more writing.
Definition at line 351 of file HttpRequest.cpp. References DEB, and m_body_file. Referenced by HttpBaseSocket::OnData(), and Ajp13Socket::ReceiveBody(). 00352 { 00353 if (m_body_file.get()) 00354 m_body_file -> fclose(); 00355 DEB( else 00356 fprintf(stderr, "CloseBody: File not open\n");) 00357 }
Definition at line 361 of file HttpRequest.cpp. References HttpTransaction::ContentLength(), HttpTransaction::ContentType(), m_attribute, m_body_file, and m_form. Referenced by HttpBaseSocket::Execute(), and Ajp13Socket::Execute(). 00362 { 00363 Utility::ncmap<std::string>::const_iterator it; 00364 if ( (it = m_attribute.find("query_string")) != m_attribute.end()) 00365 { 00366 std::string qs = it -> second; 00367 m_form = std::auto_ptr<HttpdForm>(new HttpdForm( qs, qs.size() )); 00368 } 00369 else 00370 if (m_body_file.get()) 00371 { 00372 m_form = std::auto_ptr<HttpdForm>(new HttpdForm( m_body_file.get(), ContentType(), ContentLength() )); 00373 } 00374 else 00375 { 00376 // dummy 00377 m_form = std::auto_ptr<HttpdForm>(new HttpdForm( "", 0 )); 00378 } 00379 }
Definition at line 392 of file HttpRequest.cpp. References m_cookies. 00393 { 00394 return m_cookies; 00395 }
Reimplemented from HttpTransaction. Definition at line 399 of file HttpRequest.cpp. References m_attribute, m_body_file, m_cookie, m_cookies, m_form, m_is_ssl, m_method, m_protocol, m_remote_addr, m_remote_host, m_req_uri, m_server_name, m_server_port, HttpdCookies::Reset(), and HttpTransaction::Reset(). Referenced by HttpBaseSocket::Execute(), and Ajp13Socket::Reset(). 00400 { 00401 HttpTransaction::Reset(); 00402 m_method = ""; 00403 m_protocol = ""; 00404 m_req_uri = ""; 00405 m_remote_addr = ""; 00406 m_remote_host = ""; 00407 m_server_name = ""; 00408 m_server_port = 0; 00409 m_is_ssl = false; 00410 while (!m_attribute.empty()) 00411 { 00412 m_attribute.erase(m_attribute.begin()); 00413 } 00414 m_body_file = std::auto_ptr<IFile>(NULL); 00415 m_form = std::auto_ptr<HttpdForm>(NULL); 00416 m_cookies.Reset(); 00417 while (!m_cookie.empty()) 00418 { 00419 m_cookie.erase(m_cookie.begin()); 00420 } 00421 }
Member Data Documentation
Definition at line 117 of file HttpRequest.h. Referenced by HttpMethod(), HttpRequest(), operator=(), Reset(), and SetHttpMethod().
Definition at line 118 of file HttpRequest.h. Referenced by HttpRequest(), HttpVersion(), operator=(), Reset(), and SetHttpVersion().
Definition at line 119 of file HttpRequest.h. Referenced by HttpRequest(), operator=(), Reset(), SetUri(), and Uri().
Definition at line 120 of file HttpRequest.h. Referenced by HttpRequest(), operator=(), RemoteAddr(), Reset(), and SetRemoteAddr().
Definition at line 121 of file HttpRequest.h. Referenced by HttpRequest(), operator=(), RemoteHost(), Reset(), and SetRemoteHost().
Definition at line 122 of file HttpRequest.h. Referenced by HttpRequest(), operator=(), Reset(), ServerName(), and SetServerName().
Definition at line 123 of file HttpRequest.h. Referenced by HttpRequest(), operator=(), Reset(), ServerPort(), and SetServerPort().
Definition at line 124 of file HttpRequest.h. Referenced by IsSsl(), operator=(), Reset(), and SetIsSsl().
Definition at line 125 of file HttpRequest.h. Referenced by Attribute(), Attributes(), operator=(), ParseBody(), Reset(), and SetAttribute().
Reimplemented from HttpTransaction. Definition at line 126 of file HttpRequest.h. Referenced by Attribute(), and operator=().
Definition at line 127 of file HttpRequest.h. Referenced by CloseBody(), InitBody(), operator=(), ParseBody(), Reset(), and Write().
Definition at line 128 of file HttpRequest.h. Referenced by Form(), HttpRequest(), operator=(), ParseBody(), and Reset().
Definition at line 129 of file HttpRequest.h. Referenced by AddCookie(), Cookies(), operator=(), and Reset().
The documentation for this class was generated from the following files: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1.4.4