Team E1

Fork of HTTPServer by Sam Kirsch

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

Who changed what in which revision?

UserRevisionLine numberNew contents of line
leihen 3:d6224049b3bf 1 /* HTTPFsRequestHandler.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 3:d6224049b3bf 23 #ifndef __HTTPFSREQUESTHANDLER_H__
leihen 3:d6224049b3bf 24 #define __HTTPFSREQUESTHANDLER_H__
leihen 3:d6224049b3bf 25
leihen 3:d6224049b3bf 26 #include "mbed.h"
leihen 3:d6224049b3bf 27 #include "HTTPRequestHandler.h"
leihen 3:d6224049b3bf 28
leihen 3:d6224049b3bf 29 #include <map>
leihen 3:d6224049b3bf 30 #include <string>
leihen 3:d6224049b3bf 31
leihen 4:d065642c32cc 32 /** class HTTPFsRequestHandler serves requests with file-system objects
leihen 4:d065642c32cc 33 */
leihen 3:d6224049b3bf 34 class HTTPFsRequestHandler : public HTTPRequestHandler
leihen 3:d6224049b3bf 35 {
leihen 3:d6224049b3bf 36 std::string m_rootPath;
leihen 3:d6224049b3bf 37 std::string m_localPath;
leihen 3:d6224049b3bf 38
leihen 3:d6224049b3bf 39 public:
leihen 4:d065642c32cc 40 /** constructor for HTTPFsRequestHandler object and stores the request related data locally.
leihen 4:d065642c32cc 41 * the request handling will be initiated from within the constructor.
leihen 4:d065642c32cc 42 * @param rootPath : The path under which the handler was registered.
leihen 4:d065642c32cc 43 * @param localPath : The path which is relative to the registered file system root.
leihen 4:d065642c32cc 44 * @param Msg : Message request information that comes with the request.
leihen 4:d065642c32cc 45 * @param Tcp : The socket connection for communicating with the client.
leihen 4:d065642c32cc 46 */
leihen 4:d065642c32cc 47 HTTPFsRequestHandler(const char* rootPath, const char* localPath, HTTPConnection::HTTPMessage& Msg, TCPSocketConnection& Tcp);
leihen 4:d065642c32cc 48
leihen 4:d065642c32cc 49 /** Destructor
leihen 4:d065642c32cc 50 */
leihen 3:d6224049b3bf 51 virtual ~HTTPFsRequestHandler();
leihen 3:d6224049b3bf 52
leihen 4:d065642c32cc 53 /** static creation function for this object.
leihen 4:d065642c32cc 54 */
leihen 3:d6224049b3bf 55 static inline HTTPRequestHandler* create(const char* rootPath, const char* localPath, HTTPConnection::HTTPMessage& msg, TCPSocketConnection& tcp) { return new HTTPFsRequestHandler(rootPath, localPath, msg, tcp); }
leihen 3:d6224049b3bf 56
leihen 3:d6224049b3bf 57 /** Handler function to serve GET requests
leihen 3:d6224049b3bf 58 */
leihen 3:d6224049b3bf 59 virtual int handleGetRequest();
leihen 4:d065642c32cc 60
leihen 4:d065642c32cc 61 /** Handler function to serve PUT requests
leihen 4:d065642c32cc 62 */
leihen 4:d065642c32cc 63 virtual int handlePutRequest();
leihen 4:d065642c32cc 64
leihen 4:d065642c32cc 65 /** Handler function to serve POST requests
leihen 4:d065642c32cc 66 */
leihen 4:d065642c32cc 67 virtual int handlePostRequest();
leihen 3:d6224049b3bf 68
leihen 4:d065642c32cc 69 /** Map to register different file system types and associate them with different root paths
leihen 4:d065642c32cc 70 */
leihen 3:d6224049b3bf 71 static std::map<const char*, const char*> m_fsMap;
leihen 4:d065642c32cc 72
leihen 4:d065642c32cc 73 /** static function to register a new file system type with a logical root path
leihen 4:d065642c32cc 74 */
leihen 3:d6224049b3bf 75 static void mount(const char* requestPath, const char* localPath) { m_fsMap[requestPath] = localPath; }
leihen 4:d065642c32cc 76
leihen 4:d065642c32cc 77 /** Parse a uri string for uri file name and argument:value pairs
leihen 4:d065642c32cc 78 */
leihen 4:d065642c32cc 79 int parseUriArgs(string uri, map<string, string>& args);
leihen 3:d6224049b3bf 80 };
leihen 3:d6224049b3bf 81 #endif // __HTTPFSREQUESTHANDLER_H__