Team E1

Fork of HTTPServer by Sam Kirsch

Revision:
3:d6224049b3bf
Parent:
1:6b7472d5e9ee
Child:
4:d065642c32cc
diff -r 8653bbcf7e58 -r d6224049b3bf HTTPRequestHandler.h
--- a/HTTPRequestHandler.h	Sun May 26 23:22:36 2013 +0000
+++ b/HTTPRequestHandler.h	Tue May 28 01:56:14 2013 +0000
@@ -1,26 +1,91 @@
 /* HTTPRequestHandler.h */
+/*
+Copyright (c) 2013 Henry Leinen (henry[dot]leinen [at] online [dot] de)
+ 
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+ 
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+ 
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
 #ifndef __HTTPREQUESTHANDLER_H__
 #define __HTTPREQUESTHANDLER_H__
 
 #include "mbed.h"
 #include "HTTPConnection.h"
 
+#include <map>
+
+typedef std::map<const char*,const char*> HTTPHeaders;
+
+/** class HTTPRequestHandler is the base class for HTTP Handler request implementations.
+*
+*/
 class HTTPRequestHandler
 {
+    protected:
+        HTTPConnection::HTTPMessage& msg;
+        TCPSocketConnection& tcp;
+        
     public:
-        /**
-        public constructor
+        /** Constructor for HTTPRequestHandler objects.
          */
-        HTTPRequestHandler();
+        HTTPRequestHandler(HTTPConnection::HTTPMessage&, TCPSocketConnection&);
+        
+        /** Destructor for HTTPRequestHandler objects.
+        */
+        virtual ~HTTPRequestHandler();
+        
+        /** Handler function which will be used by the HTTPServer to serve requests.
+        * @param msg : Request Message information.
+        * @param tcp : The socket which represents the active connection to the client.
+        */
+        virtual void handleRequest();
         
-        /**
-            destructor
-          */
-        ~HTTPRequestHandler();
+        /** Handler function which will handle errors and return errors correctly
+        * @param errorCode : The error code returned by the HTTP Server to represent the error condition.
+        * @param msg : Request Message information.
+        * @param tcp : The socket which represents the active connection to the client.
+        */
+        virtual void handleError(int errorCode, HTTPHeaders* header = NULL);
+
+        /** Function sends the response header which consists of the return code and the headers section
+        * the response header also contains the length (in bytes) of the body. You need to send the body
+        * right after calling this function. Please note that you do not need to consider the terminating
+        * CR+LF after your last CR+LF. This will be sent automatically once \c endResponse is called. Also
+        * the Length given in \c nLen does not need to consider this additional chars. It will also be
+        * automatically added in \c startResponse. if you need to change the headers, please do NOT 
+        * specify the \c Content-Length Header. This is done automatically be the function.
+        */
+        void startResponse(int returnCode, int nLen, HTTPHeaders* header = NULL);
+        void processResponse(int nLen, char* body );
+        void endResponse();
+
+    protected:
+        /** Handler function to serve GET requests
+        */
+        virtual int handleGetRequest() = 0;
         
+        /** Handler function to serve PUT requests
+        */
+//        virtual int handlePutRequest() = 0;
         
-        void HandleRequest(HTTPMessage& );
-        
+        /** Handler function to serve POST requests
+        */
+//        virtual int handlePostRequest() = 0;
+
 };
 
 #endif //   __HTTPREQUESTHANDLER_H__
\ No newline at end of file