aboutsummaryrefslogtreecommitdiff
path: root/src/old/tests/httpsrv/httpconnectionmonitor.cpp
diff options
context:
space:
mode:
authorMike Buland <eichlan@xagasoft.com>2007-04-03 03:49:53 +0000
committerMike Buland <eichlan@xagasoft.com>2007-04-03 03:49:53 +0000
commitf4c20290509d7ed3a8fd5304577e7a4cc0b9d974 (patch)
tree13cdf64f7cf134f397a7165b7a3fe0807e37026b /src/old/tests/httpsrv/httpconnectionmonitor.cpp
parent74d4c8cd27334fc7204d5a8773deb3d424565778 (diff)
downloadlibbu++-f4c20290509d7ed3a8fd5304577e7a4cc0b9d974.tar.gz
libbu++-f4c20290509d7ed3a8fd5304577e7a4cc0b9d974.tar.bz2
libbu++-f4c20290509d7ed3a8fd5304577e7a4cc0b9d974.tar.xz
libbu++-f4c20290509d7ed3a8fd5304577e7a4cc0b9d974.zip
Ok, no code is left in src, it's all in src/old. We'll gradually move code back
into src as it's fixed and re-org'd. This includes tests, which, I may write a unit test system into libbu++ just to make my life easier.
Diffstat (limited to 'src/old/tests/httpsrv/httpconnectionmonitor.cpp')
-rw-r--r--src/old/tests/httpsrv/httpconnectionmonitor.cpp88
1 files changed, 88 insertions, 0 deletions
diff --git a/src/old/tests/httpsrv/httpconnectionmonitor.cpp b/src/old/tests/httpsrv/httpconnectionmonitor.cpp
new file mode 100644
index 0000000..51d82f3
--- /dev/null
+++ b/src/old/tests/httpsrv/httpconnectionmonitor.cpp
@@ -0,0 +1,88 @@
1#include "httpconnectionmonitor.h"
2#include "http.h"
3#include "exceptions.h"
4#include <sys/stat.h>
5
6HttpConnectionMonitor::HttpConnectionMonitor()
7{
8}
9
10HttpConnectionMonitor::~HttpConnectionMonitor()
11{
12}
13
14bool HttpConnectionMonitor::onNewConnection( Connection *pCon, int nPort )
15{
16 printf("Got connection on port %d\n", nPort );
17
18 try
19 {
20 pCon->readInput( 60, 0 );
21 printf("#######################\n%s\n#######################\n", pCon->getInput() );
22
23 Http hp( pCon );
24 while( hp.parseRequest() == false );
25 printf("Done parsing.\n\n");
26
27 if( hp.getRequestType() == Http::reqGet )
28 {
29 printf("\"\"\"%s\"\"\"\n", hp.getRequestURI() );
30 if( !strcmp( hp.getRequestURI(), "/" ) )
31 {
32 std::string content("<html><head><title>Server Test</test></head><body>This is a test of a new system where all the pages will be more or less dynamic...<br>If you want to try to login, you can do that here:<br><form method=\"post\" action=\"showvars\" enctype=\"multipart/form-data\">Name: <input type=\"text\" name=\"name\"><br>Password: <input type=\"password\" name=\"pass\"><br><input type=\"submit\" name=\"action\" value=\"login\"></form></body></html>");
33 hp.buildResponse();
34 hp.setResponseContent(
35 "text/html",
36 content.c_str(),
37 content.size()
38 );
39 hp.sendResponse();
40 }
41 else
42 {
43 std::string content("<html><head><title>URL Not Found</test></head><body>There is no content mapped to the URL you requested. Please try another one.</body></html>");
44 hp.buildResponse( 404, "File not found.");
45 hp.setResponseContent(
46 "text/html",
47 content.c_str(),
48 content.size()
49 );
50 hp.sendResponse();
51 }
52 }
53 else
54 {
55 printf("Non get: %s\n", hp.getRequestTypeStr() );
56 pCon->appendOutput("HTTP/1.1 100 Continue\r\n\r\n");
57 }
58 pCon->writeOutput();
59 //for( int j = 0; j < 50; j++ )
60 {
61 pCon->readInput( 1, 0 );
62 //printf("Size so far: %d\n", pCon->getInputAmnt() );
63 }
64
65 if( pCon->hasInput() )
66 {
67 std::string s( pCon->getInput(), pCon->getInputAmnt() );
68
69 pCon->printInputDebug();
70 //printf("Reamining data\n==============\n%s\n==============\n",
71 // s.c_str() );
72 }
73
74 pCon->disconnect();
75 }
76 catch( ConnectionException &e )
77 {
78 printf("Connection: %s\n", e.what() );
79 }
80
81 return true;
82}
83
84bool HttpConnectionMonitor::onClosedConnection( Connection *pCon )
85{
86 return true;
87}
88