10#include <QHostAddress>
15#include <QTemporaryFile>
19namespace stefanfrings {
44 enum RequestStatus {waitForRequest, waitForHeader, waitForBody, complete, abort_size, abort_broken};
63 void readFromSocket(QTcpSocket *socket);
69 RequestStatus getStatus()
const;
72 const QByteArray& getMethod()
const;
75 QByteArray getPath()
const;
78 const QByteArray& getRawPath()
const;
81 const QByteArray& getVersion()
const;
89 QByteArray getHeader(
const QByteArray& name)
const;
95 QList<QByteArray> getHeaders(
const QByteArray& name)
const;
101 const QMultiMap<QByteArray,QByteArray>& getHeaderMap()
const;
109 QByteArray getParameter(
const QByteArray& name)
const;
115 QList<QByteArray> getParameters(
const QByteArray& name)
const;
118 const QMultiMap<QByteArray,QByteArray>& getParameterMap()
const;
121 const QByteArray& getBody()
const;
129 static QByteArray urlDecode(
const QByteArray source);
139 QTemporaryFile* getUploadedFile(
const QByteArray fieldName)
const;
145 QByteArray getCookie(
const QByteArray& name)
const;
148 const QMap<QByteArray,QByteArray>& getCookieMap()
const;
155 const QHostAddress& getPeerAddress()
const;
160 QMultiMap<QByteArray,QByteArray> headers;
163 QMultiMap<QByteArray,QByteArray> parameters;
166 QMap<QByteArray,QTemporaryFile*> uploadedFiles;
169 QMap<QByteArray,QByteArray> cookies;
187 RequestStatus status;
190 QHostAddress peerAddress;
196 int maxMultiPartSize;
202 int expectedBodySize;
205 QByteArray currentHeader;
211 QTemporaryFile* tempFile;
214 void parseMultiPartFile();
217 void readRequest(QTcpSocket* socket);
220 void readHeader(QTcpSocket* socket);
223 void readBody(QTcpSocket* socket);
226 void decodeRequestParams();
229 void extractCookies();
232 QByteArray lineBuffer;
This object represents a single HTTP request.
RequestStatus
Values for getStatus()
Stores HTTP sessions and deletes them when they have expired.