TFCweb
1.0.4 $Rev: 483 $
TFC Primavera 2012: Nucli d'un servidor web
Pàgina principal
Pàgines Relacionades
Espais de Noms
Classes
Fitxers
Llista dels Fitxers
Membres de Fitxers
src
PeticioHTTP.h
Veure la documentació d'aquest fitxer.
1
#if !defined(_PETICIO_HTTP_H_)
2
#define _PETICIO_HTTP_H_
3
10
/*
11
* Copyright (c) 2012 Toni Corvera
12
*
13
* This file is part of TFCWeb.
14
*
15
* TFCWeb is free software: you can redistribute it and/or modify
16
* it under the terms of the GNU General Public License as published by
17
* the Free Software Foundation, either version 3 of the License, or
18
* (at your option) any later version.
19
*
20
* TFCWeb is distributed in the hope that it will be useful,
21
* but WITHOUT ANY WARRANTY; without even the implied warranty of
22
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23
* GNU General Public License for more details.
24
*
25
* You should have received a copy of the GNU General Public License
26
* along with TFCWeb. If not, see <http://www.gnu.org/licenses/>.
27
*/
28
29
#include "
CapsaleraHTTP.h
"
30
#include "
CosPeticio.h
"
31
#include "
Excepcions.h
"
32
#include "
MissatgeHTTP.h
"
33
#include "
portabilitat.h
"
34
#include "
Uri.h
"
35
36
#include <algorithm>
37
#include <cassert>
38
#include <list>
39
#include <map>
40
#include <ostream>
41
42
namespace
tfc {
43
48
enum
TipusPeticioHTTP
{
49
GET
= 1,
50
POST
,
51
HEAD
,
52
OPTIONS
,
// XXX: CONNECT ??
53
TRACE
,
54
PUT
,
55
METODE_DELETE
,
// DELETE és una macro a Windows! (winnt.h)
56
CONNECT
,
// Introduït en l'RFC 2616
58
desconegut
59
};
60
64
class
ErrorMetodeDesconegut
:
public
ErrorTFC
{
65
public
:
66
explicit
ErrorMetodeDesconegut
(
const
std::string & w =
"Mètode HTTP desconegut"
)
67
:
ErrorTFC
(w)
68
{
69
// buit
70
}
71
};
72
73
77
namespace
NomTipusPeticioHTTP {
82
const
std::string&
nom
(
TipusPeticioHTTP
tipus
);
83
89
TipusPeticioHTTP
tipus
(
const
std::string &
nom
)
throw
(ErrorMetodeDesconegut);
90
}
91
95
enum
VersioHTTP
{
96
HTTP_DESCONEGUT
,
97
HTTP_0_9
,
98
HTTP_1_0
,
99
HTTP_1_1
,
100
HTTP_1_X
,
// HTTP 1.x > 1.1
101
HTTP_SUPERIOR
// HTTP >= 2.0
102
};
104
std::ostream&
operator<<
(std::ostream & os,
tfc::VersioHTTP
v);
105
109
class
PeticioHTTP
:
public
MissatgeHTTP
<CosPeticio> {
110
public
:
111
PeticioHTTP
(
TipusPeticioHTTP
tipus
,
112
const
Uri
&
ruta
,
113
VersioHTTP
versio
)
114
:
MissatgeHTTP
<
CosPeticio
>(),
tipus_
(tipus),
ruta_
(ruta),
versio_
(versio)
115
{
116
// buit
117
}
118
120
PeticioHTTP
(
const
PeticioHTTP
& p)
121
:
MissatgeHTTP
<
CosPeticio
>(p),
tipus_
(p.
tipus_
),
ruta_
(p.
ruta_
),
versio_
(p.
versio_
)
122
{
123
// buit
124
}
125
126
// Getters
127
129
TipusPeticioHTTP
tipus
()
const
{
return
tipus_
; }
130
132
VersioHTTP
versio
()
const
{
return
versio_
; }
133
135
const
Uri
&
ruta
()
const
{
return
ruta_
; }
136
137
// Setters
138
140
void
tipus
(
TipusPeticioHTTP
t) {
tipus_
= t; }
141
143
void
versio
(
VersioHTTP
versio
) {
versio_
=
versio
; }
144
146
void
ruta
(
const
Uri
&
ruta
) {
ruta_
=
ruta
; }
147
private
:
148
TipusPeticioHTTP
tipus_
;
149
Uri
ruta_
;
150
VersioHTTP
versio_
;
151
156
friend
std::ostream&
operator<<
(std::ostream & os,
const
PeticioHTTP
& r) {
157
os <<
NomTipusPeticioHTTP::nom
(r.
tipus
()) <<
", "
<< r.
ruta
()
158
<<
", "
<< r.
versio
() <<
" [\n"
;
159
r.
imprimeix_capsaleres
(os);
160
return
os <<
"]\n"
;
161
}
162
};
163
164
}
// ns tfc
165
166
#endif // _PETICIO_HTTP_H_
167
168
// vim:set ts=4 et ai: //
Generat a Dl Jun 17 2013 20:07:39 per a TFCweb per
1.8.1.2