10 #include <QHostAddress>
15 #include <QTemporaryFile>
19 namespace stefanfrings {
44 enum RequestStatus {waitForRequest, waitForHeader, waitForBody, complete, abort};
63 void readFromSocket(QTcpSocket *socket);
69 RequestStatus getStatus()
const;
72 QByteArray getMethod()
const;
75 QByteArray getPath()
const;
78 const QByteArray& getRawPath()
const;
81 QByteArray getVersion()
const;
89 QByteArray getHeader(
const QByteArray& name)
const;
95 QList<QByteArray> getHeaders(
const QByteArray& name)
const;
101 QMultiMap<QByteArray,QByteArray> getHeaderMap()
const;
109 QByteArray getParameter(
const QByteArray& name)
const;
115 QList<QByteArray> getParameters(
const QByteArray& name)
const;
118 QMultiMap<QByteArray,QByteArray> getParameterMap()
const;
121 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 QMap<QByteArray,QByteArray>& getCookieMap();
155 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.