Remove dynamic exceptions
[anna.git] / include / anna / http / Method.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_Method_hpp
10 #define anna_http_Method_hpp
11
12 #include <string>
13
14 #include <anna/config/defines.hpp>
15 #include <anna/core/define.autoenum.hpp>
16
17 namespace anna {
18
19 namespace http {
20
21 class Token;
22
23 /**
24    Metodos utilizados para realizar peticiones HTTP.
25 */
26 class Method {
27 public:
28   /**
29      Tipos de peticiones definidos en la RFC 2616
30      \see Method
31   */
32   struct Type {
33     enum _v {
34       None = -1, Post, Options, Get, Head, Put, Delete, Trace, Connect
35     };
36     anna_declare_enum(Type);
37   };
38
39   /**
40      Interpreta el token recibido como parametro y devuelve el valor de Type con el
41      que esta asociado.
42      \param token Token obtenido en la fase de analisis.
43      \warning Exclusivamente uso interno.
44      \return El tipo de metodo.
45   */
46   static Type::_v asType(const Token* token) ;
47
48   /**
49      Devuelve el nombre del metodo con el que esta asociado el tipo recibido.
50      \param type Tipo de metodo.
51      \return el nombre del metodo con el que esta asociado el tipo recibido.
52   */
53   static std::string asString(const Type::_v type) ;
54
55 private:
56   Method() {;}
57 };
58
59
60 }
61 }
62
63 #endif