Team E1

Fork of HTTPServer by Sam Kirsch

Committer:
leihen
Date:
Tue May 28 21:20:58 2013 +0000
Revision:
4:d065642c32cc
Parent:
3:d6224049b3bf
Child:
5:dc88012caef1
Added parameter parsing from uri in http webrequest.
; Documentation updated.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
leihen 1:6b7472d5e9ee 1 /* HTTPRequestHandler.h */
leihen 3:d6224049b3bf 2 /*
leihen 3:d6224049b3bf 3 Copyright (c) 2013 Henry Leinen (henry[dot]leinen [at] online [dot] de)
leihen 3:d6224049b3bf 4
leihen 3:d6224049b3bf 5 Permission is hereby granted, free of charge, to any person obtaining a copy
leihen 3:d6224049b3bf 6 of this software and associated documentation files (the "Software"), to deal
leihen 3:d6224049b3bf 7 in the Software without restriction, including without limitation the rights
leihen 3:d6224049b3bf 8 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
leihen 3:d6224049b3bf 9 copies of the Software, and to permit persons to whom the Software is
leihen 3:d6224049b3bf 10 furnished to do so, subject to the following conditions:
leihen 3:d6224049b3bf 11
leihen 3:d6224049b3bf 12 The above copyright notice and this permission notice shall be included in
leihen 3:d6224049b3bf 13 all copies or substantial portions of the Software.
leihen 3:d6224049b3bf 14
leihen 3:d6224049b3bf 15 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
leihen 3:d6224049b3bf 16 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
leihen 3:d6224049b3bf 17 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
leihen 3:d6224049b3bf 18 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
leihen 3:d6224049b3bf 19 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
leihen 3:d6224049b3bf 20 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
leihen 3:d6224049b3bf 21 THE SOFTWARE.
leihen 3:d6224049b3bf 22 */
leihen 1:6b7472d5e9ee 23 #ifndef __HTTPREQUESTHANDLER_H__
leihen 1:6b7472d5e9ee 24 #define __HTTPREQUESTHANDLER_H__
leihen 1:6b7472d5e9ee 25
leihen 1:6b7472d5e9ee 26 #include "mbed.h"
leihen 1:6b7472d5e9ee 27 #include "HTTPConnection.h"
leihen 1:6b7472d5e9ee 28
leihen 3:d6224049b3bf 29 #include <map>
leihen 3:d6224049b3bf 30
leihen 3:d6224049b3bf 31 typedef std::map<const char*,const char*> HTTPHeaders;
leihen 3:d6224049b3bf 32
leihen 3:d6224049b3bf 33 /** class HTTPRequestHandler is the base class for HTTP Handler request implementations.
leihen 3:d6224049b3bf 34 *
leihen 3:d6224049b3bf 35 */
leihen 4:d065642c32cc 36
leihen 1:6b7472d5e9ee 37 class HTTPRequestHandler
leihen 1:6b7472d5e9ee 38 {
leihen 3:d6224049b3bf 39 protected:
leihen 3:d6224049b3bf 40 HTTPConnection::HTTPMessage& msg;
leihen 3:d6224049b3bf 41 TCPSocketConnection& tcp;
leihen 3:d6224049b3bf 42
leihen 1:6b7472d5e9ee 43 public:
leihen 3:d6224049b3bf 44 /** Constructor for HTTPRequestHandler objects.
leihen 1:6b7472d5e9ee 45 */
leihen 3:d6224049b3bf 46 HTTPRequestHandler(HTTPConnection::HTTPMessage&, TCPSocketConnection&);
leihen 3:d6224049b3bf 47
leihen 3:d6224049b3bf 48 /** Destructor for HTTPRequestHandler objects.
leihen 3:d6224049b3bf 49 */
leihen 3:d6224049b3bf 50 virtual ~HTTPRequestHandler();
leihen 3:d6224049b3bf 51
leihen 3:d6224049b3bf 52 /** Handler function which will be used by the HTTPServer to serve requests.
leihen 4:d065642c32cc 53 * The default version of this function will dispatch respective handler member
leihen 4:d065642c32cc 54 * functions according to the request type given in the HTTPMessage object.
leihen 4:d065642c32cc 55 * The list of possible functions dispatched is :
leihen 4:d065642c32cc 56 * * handleGetRequest
leihen 4:d065642c32cc 57 * * handlePostRequest
leihen 4:d065642c32cc 58 * * handlePutRequest
leihen 3:d6224049b3bf 59 */
leihen 3:d6224049b3bf 60 virtual void handleRequest();
leihen 1:6b7472d5e9ee 61
leihen 3:d6224049b3bf 62 /** Handler function which will handle errors and return errors correctly
leihen 3:d6224049b3bf 63 * @param errorCode : The error code returned by the HTTP Server to represent the error condition.
leihen 3:d6224049b3bf 64 * @param msg : Request Message information.
leihen 3:d6224049b3bf 65 * @param tcp : The socket which represents the active connection to the client.
leihen 3:d6224049b3bf 66 */
leihen 3:d6224049b3bf 67 virtual void handleError(int errorCode, HTTPHeaders* header = NULL);
leihen 3:d6224049b3bf 68
leihen 3:d6224049b3bf 69 /** Function sends the response header which consists of the return code and the headers section
leihen 3:d6224049b3bf 70 * the response header also contains the length (in bytes) of the body. You need to send the body
leihen 3:d6224049b3bf 71 * right after calling this function. Please note that you do not need to consider the terminating
leihen 3:d6224049b3bf 72 * CR+LF after your last CR+LF. This will be sent automatically once \c endResponse is called. Also
leihen 3:d6224049b3bf 73 * the Length given in \c nLen does not need to consider this additional chars. It will also be
leihen 3:d6224049b3bf 74 * automatically added in \c startResponse. if you need to change the headers, please do NOT
leihen 3:d6224049b3bf 75 * specify the \c Content-Length Header. This is done automatically be the function.
leihen 3:d6224049b3bf 76 */
leihen 3:d6224049b3bf 77 void startResponse(int returnCode, int nLen, HTTPHeaders* header = NULL);
leihen 3:d6224049b3bf 78 void processResponse(int nLen, char* body );
leihen 3:d6224049b3bf 79 void endResponse();
leihen 3:d6224049b3bf 80
leihen 3:d6224049b3bf 81 protected:
leihen 4:d065642c32cc 82 /** Handler function to serve GET requests. Download ressource from server from \c uri location.
leihen 3:d6224049b3bf 83 */
leihen 3:d6224049b3bf 84 virtual int handleGetRequest() = 0;
leihen 1:6b7472d5e9ee 85
leihen 4:d065642c32cc 86 /** Handler function to serve PUT requests. Upload ressource to server to \c uri location.
leihen 3:d6224049b3bf 87 */
leihen 4:d065642c32cc 88 virtual int handlePutRequest() = 0;
leihen 1:6b7472d5e9ee 89
leihen 4:d065642c32cc 90 /** Handler function to serve POST requests. Send data to webserver. Can also be appended to uri.
leihen 3:d6224049b3bf 91 */
leihen 4:d065642c32cc 92 virtual int handlePostRequest() = 0;
leihen 1:6b7472d5e9ee 93 };
leihen 1:6b7472d5e9ee 94
leihen 1:6b7472d5e9ee 95 #endif // __HTTPREQUESTHANDLER_H__