Remove dynamic exceptions
[anna.git] / include / anna / http / Request.hpp
1 // ANNA - Anna is Not Nothingness Anymore                                                         //
2 //                                                                                                //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo                         //
4 //                                                                                                //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite                           //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
7
8
9 #ifndef anna_http_Request_hpp
10 #define anna_http_Request_hpp
11
12 #include <anna/http/Message.hpp>
13 #include <anna/http/Method.hpp>
14
15 namespace anna {
16
17 namespace http {
18
19 /**
20    Clase que modela las peticiones HTTP segun la RFC 2616.
21 */
22 class Request : public Message {
23 public:
24   /**
25      Constructor.
26   */
27   explicit Request() : Message(Message::Type::Request) {;}
28
29   /**
30      Devuelve el metodo asociado a esta peticion.
31      \return el metodo asociado a esta peticion.
32   */
33   Method::Type::_v getMethod() const { return a_method; }
34
35   /**
36      Devuelve la URI asociado a esta peticion.
37      \return la URI asociado a esta peticion.
38   */
39   const std::string& getURI() const { return a_uri; }
40
41   /**
42      Establece el metodo de esta peticion.
43      \param method Metodo a establecer para la peticion.
44   */
45   void setMethod(const Method::Type::_v method) { a_method = method; }
46
47   /**
48      Establece el URI de esta peticion.
49      \param uri URI a establecer para la peticion.
50   */
51   void setURI(const std::string& uri) { a_uri = uri; }
52
53   /**
54      Devuelve una cadena con toda la informacion relevante de este objeto.
55      \return una cadena con toda la informacion relevante de este objeto.
56   */
57   std::string asString() const ;
58
59 private:
60   Method::Type::_v a_method;
61   std::string a_uri;
62
63   std::string codeStartLine() const noexcept(false);
64 };
65
66 }
67 }
68
69 #endif
70