QtWebApp
httprequest.h
Go to the documentation of this file.
1
6#ifndef HTTPREQUEST_H
7#define HTTPREQUEST_H
8
9#include <QByteArray>
10#include <QHostAddress>
11#include <QTcpSocket>
12#include <QMap>
13#include <QMultiMap>
14#include <QSettings>
15#include <QTemporaryFile>
16#include <QUuid>
17#include "httpglobal.h"
18
19namespace stefanfrings {
20
37class DECLSPEC HttpRequest {
38 Q_DISABLE_COPY(HttpRequest)
39 friend class HttpSessionStore;
40
41public:
42
44 enum RequestStatus {waitForRequest, waitForHeader, waitForBody, complete, abort_size, abort_broken};
45
50 HttpRequest(const QSettings* settings);
51
55 virtual ~HttpRequest();
56
63 void readFromSocket(QTcpSocket *socket);
64
69 RequestStatus getStatus() const;
70
72 const QByteArray& getMethod() const;
73
75 QByteArray getPath() const;
76
78 const QByteArray& getRawPath() const;
79
81 const QByteArray& getVersion() const;
82
89 QByteArray getHeader(const QByteArray& name) const;
90
95 QList<QByteArray> getHeaders(const QByteArray& name) const;
96
101 const QMultiMap<QByteArray,QByteArray>& getHeaderMap() const;
102
109 QByteArray getParameter(const QByteArray& name) const;
110
115 QList<QByteArray> getParameters(const QByteArray& name) const;
116
118 const QMultiMap<QByteArray,QByteArray>& getParameterMap() const;
119
121 const QByteArray& getBody() const;
122
129 static QByteArray urlDecode(const QByteArray source);
130
139 QTemporaryFile* getUploadedFile(const QByteArray fieldName) const;
140
145 QByteArray getCookie(const QByteArray& name) const;
146
148 const QMap<QByteArray,QByteArray>& getCookieMap() const;
149
155 const QHostAddress& getPeerAddress() const;
156
157private:
158
160 QMultiMap<QByteArray,QByteArray> headers;
161
163 QMultiMap<QByteArray,QByteArray> parameters;
164
166 QMap<QByteArray,QTemporaryFile*> uploadedFiles;
167
169 QMap<QByteArray,QByteArray> cookies;
170
172 QByteArray bodyData;
173
175 QByteArray method;
176
178 QByteArray path;
179
181 QByteArray version;
182
187 RequestStatus status;
188
190 QHostAddress peerAddress;
191
193 int maxSize;
194
196 int maxMultiPartSize;
197
199 int currentSize;
200
202 int expectedBodySize;
203
205 QByteArray currentHeader;
206
208 QByteArray boundary;
209
211 QTemporaryFile* tempFile;
212
214 void parseMultiPartFile();
215
217 void readRequest(QTcpSocket* socket);
218
220 void readHeader(QTcpSocket* socket);
221
223 void readBody(QTcpSocket* socket);
224
226 void decodeRequestParams();
227
229 void extractCookies();
230
232 QByteArray lineBuffer;
233
234};
235
236} // end of namespace
237
238#endif // HTTPREQUEST_H
This object represents a single HTTP request.
Definition: httprequest.h:37
RequestStatus
Values for getStatus()
Definition: httprequest.h:44
Stores HTTP sessions and deletes them when they have expired.