![]() |
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 59 of file HttpRequest.cpp. 00059 : HttpTransaction() 00060 , m_server_port(0) 00061 , m_is_ssl(false) 00062 , m_body_file(NULL) 00063 , m_form(NULL) 00064 { 00065 }
Create from plain old cgi request.
Definition at line 70 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(). 00070 : HttpTransaction() 00071 , m_server_port(0) 00072 , m_is_ssl(false) 00073 , m_body_file(NULL) 00074 , m_form(NULL) 00075 { 00076 int i = 0; 00077 DEB( std::cout << "Initialize HttpRequest from cgi...\n";) 00078 while (environ[i] && *environ[i]) 00079 { 00080 Parse pa(environ[i], "="); 00081 std::string key = pa.getword(); 00082 std::string value = pa.getrest(); 00083 if (key == "REQUEST_METHOD") 00084 m_method = value; 00085 else 00086 if (key == "SERVER_PROTOCOL") 00087 m_protocol = value; 00088 else 00089 if (key == "PATH_INFO") 00090 m_req_uri = value; 00091 else 00092 if (key == "REMOTE_ADDR") 00093 m_remote_addr = value; 00094 else 00095 if (key == "REMOTE_HOST") 00096 m_remote_host = value; 00097 else 00098 if (key == "SERVER_NAME") 00099 m_server_name = value; 00100 else 00101 if (key == "SERVER_PORT") 00102 m_server_port = atoi(value.c_str()); 00103 else 00104 if (key.size() > 5 && key.substr(0, 5) == "HTTP_") 00105 { 00106 key = key.substr(5); 00107 for (size_t pos = 0; pos < key.size(); pos++) 00108 { 00109 if (key[pos] == '_') 00110 key[pos] = '-'; 00111 else 00112 if (key[pos] >= 'A' && key[pos] <= 'Z') 00113 key[pos] |= 32; 00114 } 00115 DEB( std::cout << " http header '" << key << "' == '" << value << "\n";) 00116 SetHeader(key, value); 00117 } 00118 ++i; 00119 } 00120 DEB( std::cout << " setup http form\n";) 00121 m_form = std::auto_ptr<HttpdForm>(new HttpdForm(fil)); 00122 }
Definition at line 127 of file HttpRequest.cpp. 00127 : HttpTransaction(src) 00128 , m_method(src.m_method) 00129 , m_protocol(src.m_protocol) 00130 , m_req_uri(src.m_req_uri) 00131 , m_remote_addr(src.m_remote_addr) 00132 , m_remote_host(src.m_remote_host) 00133 , m_server_name(src.m_server_name) 00134 , m_server_port(src.m_server_port) 00135 , m_is_ssl(src.m_is_ssl) 00136 , m_attribute(src.m_attribute) 00137 , m_null(src.m_null) 00138 , m_body_file(src.m_body_file) 00139 , m_form(src.m_form) 00140 , m_cookies(src.m_cookies) 00141 , m_cookie(src.m_cookie) 00142 { 00143 }
Member Function Documentation
Definition at line 153 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. 00154 { 00155 m_method = src.m_method; 00156 m_protocol = src.m_protocol; 00157 m_req_uri = src.m_req_uri; 00158 m_remote_addr = src.m_remote_addr; 00159 m_remote_host = src.m_remote_host; 00160 m_server_name = src.m_server_name; 00161 m_server_port = src.m_server_port; 00162 m_is_ssl = src.m_is_ssl; 00163 m_attribute = src.m_attribute; 00164 m_null = src.m_null; 00165 m_body_file = src.m_body_file; 00166 m_form = src.m_form; 00167 m_cookies = src.m_cookies; 00168 m_cookie = src.m_cookie; 00169 00170 HttpTransaction::operator=(src); 00171 00172 return *this; 00173 }
Get, Post.
Definition at line 177 of file HttpRequest.cpp. References m_method. Referenced by HttpBaseSocket::OnFirst(), and Ajp13Socket::ReceiveForwardRequest(). 00178 { 00179 m_method = value; 00180 }
Definition at line 183 of file HttpRequest.cpp. References m_method. 00184 { 00185 return m_method; 00186 }
HTTP/1.x.
Definition at line 191 of file HttpRequest.cpp. References m_protocol. Referenced by HttpBaseSocket::OnFirst(), and Ajp13Socket::ReceiveForwardRequest(). 00192 { 00193 m_protocol = value; 00194 }
Definition at line 197 of file HttpRequest.cpp. References m_protocol. Referenced by HttpBaseSocket::Execute(). 00198 { 00199 return m_protocol; 00200 }
Definition at line 205 of file HttpRequest.cpp. References m_req_uri. Referenced by HttpBaseSocket::OnFirst(), and Ajp13Socket::ReceiveForwardRequest(). 00206 { 00207 m_req_uri = value; 00208 }
Definition at line 211 of file HttpRequest.cpp. References m_req_uri. 00212 { 00213 return m_req_uri; 00214 }
Definition at line 219 of file HttpRequest.cpp. References m_remote_addr. Referenced by HttpBaseSocket::OnFirst(), and Ajp13Socket::ReceiveForwardRequest(). 00220 { 00221 m_remote_addr = value; 00222 }
Definition at line 225 of file HttpRequest.cpp. References m_remote_addr. 00226 { 00227 return m_remote_addr; 00228 }
Definition at line 233 of file HttpRequest.cpp. References m_remote_host. Referenced by HttpBaseSocket::OnFirst(), and Ajp13Socket::ReceiveForwardRequest(). 00234 { 00235 m_remote_host = value; 00236 }
Definition at line 239 of file HttpRequest.cpp. References m_remote_host. 00240 { 00241 return m_remote_host; 00242 }
Definition at line 247 of file HttpRequest.cpp. References m_server_name. Referenced by HttpBaseSocket::OnFirst(), and Ajp13Socket::ReceiveForwardRequest(). 00248 { 00249 m_server_name = value; 00250 }
Definition at line 253 of file HttpRequest.cpp. References m_server_name. 00254 { 00255 return m_server_name; 00256 }
Definition at line 261 of file HttpRequest.cpp. References m_server_port. Referenced by HttpBaseSocket::OnFirst(), and Ajp13Socket::ReceiveForwardRequest(). 00262 { 00263 m_server_port = value; 00264 }
Definition at line 267 of file HttpRequest.cpp. References m_server_port. 00268 { 00269 return m_server_port; 00270 }
Definition at line 275 of file HttpRequest.cpp. References m_is_ssl. Referenced by Ajp13Socket::ReceiveForwardRequest(). 00276 { 00277 m_is_ssl = value; 00278 }
Definition at line 281 of file HttpRequest.cpp. References m_is_ssl. 00282 { 00283 return m_is_ssl; 00284 }
Set / Read attribute value.
Definition at line 289 of file HttpRequest.cpp. References m_attribute. Referenced by HttpBaseSocket::OnFirst(), and Ajp13Socket::ReceiveForwardRequest(). 00290 { 00291 m_attribute[key] = value; 00292 }
Definition at line 295 of file HttpRequest.cpp. References Utility::l2string(), and m_attribute. 00296 { 00297 m_attribute[key] = Utility::l2string(value); 00298 }
Definition at line 301 of file HttpRequest.cpp. References m_attribute, and m_null. 00302 { 00303 Utility::ncmap<std::string>::const_iterator it; 00304 if ( (it = m_attribute.find(key)) != m_attribute.end()) 00305 return it -> second; 00306 return m_null; 00307 }
Definition at line 311 of file HttpRequest.cpp. References m_attribute. 00312 { 00313 return m_attribute; 00314 }
Cookies.
Definition at line 318 of file HttpRequest.cpp. References HttpdCookies::add(), DEB, Parse::getword(), m_cookie, and m_cookies. Referenced by HttpBaseSocket::OnHeader(), and Ajp13Socket::ReceiveForwardRequest(). 00319 { 00320 m_cookies.add( str ); 00321 Parse pa(str, ";"); 00322 std::string lstr = pa.getword(); 00323 while (!lstr.empty()) 00324 { 00325 Parse pa2(lstr, "="); 00326 std::string name = pa2.getword(); 00327 m_cookie[name] = lstr; 00328 DEB(fprintf(stderr, " *** AddCookie '%s' = '%s'\n", name.c_str(), lstr.c_str());) 00329 lstr = pa.getword(); 00330 } 00331 }
Open file for body data.
Definition at line 335 of file HttpRequest.cpp. References DEB, and m_body_file. Referenced by HttpBaseSocket::OnHeaderComplete(), and Ajp13Socket::ReceiveForwardRequest(). 00336 { 00337 if (!m_body_file.get()) 00338 m_body_file = std::auto_ptr<IFile>(new MemFile); 00339 DEB( else 00340 fprintf(stderr, "Body data file already opened\n");) 00341 }
Write body data.
Definition at line 345 of file HttpRequest.cpp. References DEB, and m_body_file. Referenced by HttpBaseSocket::OnData(), and Ajp13Socket::ReceiveBody(). 00346 { 00347 if (m_body_file.get()) 00348 m_body_file -> fwrite(buf, 1, sz); 00349 DEB( else 00350 fprintf(stderr, "Write: Body data file not open\n");) 00351 }
No more writing.
Definition at line 355 of file HttpRequest.cpp. References DEB, and m_body_file. Referenced by HttpBaseSocket::OnData(), and Ajp13Socket::ReceiveBody(). 00356 { 00357 if (m_body_file.get()) 00358 m_body_file -> fclose(); 00359 DEB( else 00360 fprintf(stderr, "CloseBody: File not open\n");) 00361 }
Definition at line 365 of file HttpRequest.cpp. References HttpTransaction::ContentLength(), HttpTransaction::ContentType(), m_attribute, m_body_file, and m_form. Referenced by HttpBaseSocket::Execute(), and Ajp13Socket::Execute(). 00366 { 00367 Utility::ncmap<std::string>::const_iterator it; 00368 if ( (it = m_attribute.find("query_string")) != m_attribute.end()) 00369 { 00370 std::string qs = it -> second; 00371 m_form = std::auto_ptr<HttpdForm>(new HttpdForm( qs, qs.size() )); 00372 } 00373 else 00374 if (m_body_file.get()) 00375 { 00376 m_form = std::auto_ptr<HttpdForm>(new HttpdForm( m_body_file.get(), ContentType(), ContentLength() )); 00377 } 00378 else 00379 { 00380 // dummy 00381 m_form = std::auto_ptr<HttpdForm>(new HttpdForm( "", 0 )); 00382 } 00383 }
Definition at line 396 of file HttpRequest.cpp. References m_cookies. 00397 { 00398 return m_cookies; 00399 }
Reimplemented from HttpTransaction. Definition at line 403 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(). 00404 { 00405 HttpTransaction::Reset(); 00406 m_method = ""; 00407 m_protocol = ""; 00408 m_req_uri = ""; 00409 m_remote_addr = ""; 00410 m_remote_host = ""; 00411 m_server_name = ""; 00412 m_server_port = 0; 00413 m_is_ssl = false; 00414 while (!m_attribute.empty()) 00415 { 00416 m_attribute.erase(m_attribute.begin()); 00417 } 00418 m_body_file = std::auto_ptr<IFile>(NULL); 00419 m_form = std::auto_ptr<HttpdForm>(NULL); 00420 m_cookies.Reset(); 00421 while (!m_cookie.empty()) 00422 { 00423 m_cookie.erase(m_cookie.begin()); 00424 } 00425 }
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: |