CPPSERV


Home Projects Jobs Clientele Contact

cppserv


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] Add test getHeader() and getHeaderDate() functionality for headers.h



From: Sergey Jukov <sergey@total-knowledge.com>

---
 ChangeLog           |    4 ++--
 engine.xml          |    2 --
 headers/headers.cpp |   22 +++++++++++++++++-----
 headers/headers.h   |    9 +++++++++
 4 files changed, 28 insertions(+), 9 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 83a0a1d..9f4ba79 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,5 @@
-Sergey Jukov <sergey@total-knowledge>                Fri, 9 Sep 2006 10:30:00 -0800 
-- Add extra path test functionality to headers.cpp.
+Sergey Jukov <sergey@total-knowledge>                Tue, 12 Sep 2006 10:30:00 -0800 
+- Add getHeader() and getDateHeader() test functionality to headers.cpp.
 	
 Sergey Jukov <sergey@total-knowledge.com>            Mon, 4 Sep 2006 22:10:03 -0800
 - Add Utils servlet test scripts
diff --git a/engine.xml b/engine.xml
index 0851951..4dec2a8 100644
--- a/engine.xml
+++ b/engine.xml
@@ -5,8 +5,6 @@
 <app name="test">
     <servlet name="IndexServlet" dso="./debug/index/IndexServlet.so"/>
     <servlet name="HelloServlet" dso="./debug/hello/HelloServlet.so"/>
-<!--    <servlet name="FirstTestServlet"
-dso="./debug/firsttest/FirstTestServlet.so"/> -->
     <servlet name="FileUploadServlet" dso="./debug/fileupload/FileUploadServlet.so"/>
     <servlet name="RedirectServlet" dso="./debug/redirect/RedirectServlet.so"/>
     <servlet name="CookiesServlet" dso="./debug/cookies/CookiesServlet.so"/>
diff --git a/headers/headers.cpp b/headers/headers.cpp
index 1b6897b..e026299 100644
--- a/headers/headers.cpp
+++ b/headers/headers.cpp
@@ -23,7 +23,7 @@ void HeadersServlet::service(servlet::Ht
 {
 	std::ostream &out = resp.getOutputStream();
 	std::auto_ptr< std::vector<std::string> > headerNames = req.getHeaderNames();
-	resp.setHeader("Pragma", "no-cache");
+	//resp.setHeader("Pragma", "no-cache");
 	resp.setHeader("X-Test-Header", "MyHeader");
 	renderHeader(out);
 	out<<"<PRE>";
@@ -41,12 +41,17 @@ void HeadersServlet::service(servlet::Ht
 
 	out << "\n==========\nHTTP Method = "+req.getMethod();
 
-	//std:: string methodName = "X-Test-Header";
-	//out << "\nInteger Header = "+req.getIntHeader(methodName);
-	out << "\nPath = "+req.getPathInfo();
+	std:: string testHeaderName = "If-Modified-Since";
 
+	//out << "\nInteger Header = "+req.getIntHeader(methodName); unimplemented
+	//out << "\nPath = "+req.getPathInfo(); unimplemented
+	//out << "\nPath Translated = "+req.getPathTranslated(); unimplemented
+	//out << "\nAuthentication Type = "+req.getAuthType(); unimplemented
 
-	//out << "\nPath Translated = "+req.getPathTranslated();
+	out << "\nHeader = "+req.getHeader(testHeaderName); 
+	std:: string dateHeader = LongToString(req.getDateHeader(testHeaderName));
+
+	out << "\nDate Header = "+dateHeader; 
 
 	out<<"</PRE>";
 
@@ -63,4 +68,11 @@ void HeadersServlet::renderFooter(std::o
 	out<<"\n </body>\n</html>";
 }
 
+std::string HeadersServlet::LongToString(long l)   //convert long to string
+{
+        std:: stringstream s;
+        s << l;
+        return s.str();
+}
+
 EXPORT_SERVLET(HeadersServlet)
diff --git a/headers/headers.h b/headers/headers.h
index 2814471..811dd24 100644
--- a/headers/headers.h
+++ b/headers/headers.h
@@ -24,6 +24,9 @@ #include <servlet/HttpServlet.h>
 #include <servlet/HttpServletRequest.h>
 #include <servlet/HttpServletResponse.h>
 #include <iostream>
+#include <sstream>
+
+
 
 /**
 This servlet demonstrates how to set response headers, and look
@@ -36,6 +39,10 @@ For example, in URL 
 http://www.total-knowledge.com/csp/HeadersServlet/add/path?key=value
 extra path information is "/add/path". Returns null if there was no 
 extra path information provided.
+It displays HTTP method with which this request was made, work of getHeader()
+which returns the value of specified request header(null if there was no such 
+header in HTTP request) and getDateHeader() which returns -1 if the request 
+doesn't have a header. Example provided for If-Modified-Since HTTP request header.
 
 @author Ilya A. Volynets-Evenbakh
 */
@@ -44,8 +51,10 @@ class HeadersServlet : public servlet::H
 private:
 	void renderHeader(std::ostream&);
 	void renderFooter(std::ostream&);
+	std::string LongToString(long l);
 public:
 	virtual void service(servlet::HttpServletRequest& req, servlet::HttpServletResponse& resp);
+
 };
 
 #endif
-- 
1.4.2


Authoright © Total Knowledge: 2001-2008