Emacs/cc-ide: More robust function movement
[mediaserv.git] / Server / HTTPRequest.hh
1 // $Id$
2 //
3 // Copyright (C) 2006 
4
5 #ifndef HH_HTTPRequest_
6 #define HH_HTTPRequest_ 1
7
8 // Custom includes
9 #include <exception>
10 #include <string>
11 #include <map>
12 #include <boost/range/iterator_range.hpp>
13 #include "Socket/FileHandle.hh"
14
15 //#include "HTTPRequest.mpp"
16 ///////////////////////////////hh.p////////////////////////////////////////
17
18 namespace g0dil {
19 namespace mediaserv {
20     
21     class HTTPRequest
22     {
23     public:
24         ///////////////////////////////////////////////////////////////////////////
25         // Types
26
27         ///////////////////////////////////////////////////////////////////////////
28         ///\name Structors and default members
29         ///@{
30
31         HTTPRequest();
32         HTTPRequest(senf::FileHandle handle, std::string const & request);
33
34         ///@}
35         ///////////////////////////////////////////////////////////////////////////
36         ///\name Accessors
37         ///@{
38         
39         std::string const & host() const;
40         std::string const & method() const;
41         std::string const & url() const;
42         std::string const & version() const;
43         std::string const & operator[](std::string const & key) const;
44
45         ///@}
46         ///////////////////////////////////////////////////////////////////////////
47         ///\name Mutators
48         ///@{
49
50         void parseRequest(senf::FileHandle handle, std::string const & request);
51
52         ///@}
53
54     protected:
55
56     private:
57         void parseRequestURL(boost::iterator_range<std::string::const_iterator> line);
58         void parseRequestHeader(boost::iterator_range<std::string::const_iterator> line);
59
60         typedef std::map<std::string,std::string> Headers;
61
62         std::string host_;
63         std::string method_;
64         std::string url_;
65         std::string version_;
66         Headers headers_;
67     };
68
69     struct InvalidHTTPRequestException : public std::exception
70     { char const * what() const throw() { return "invalid http request"; } };
71     
72 }}
73
74 ///////////////////////////////hh.e////////////////////////////////////////
75 #include "HTTPRequest.cci"
76 //#include "HTTPRequest.ct"
77 //#include "HTTPRequest.cti"
78 //#include "HTTPRequest.mpp"
79 #endif
80
81 \f
82 // Local Variables:
83 // mode: c++
84 // End: