Stellarium 0.15.2
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 <QTemporaryFile>
15 #include <QUuid>
16 #include "httpglobal.h"
17 
36 class DECLSPEC HttpRequest {
37  Q_DISABLE_COPY(HttpRequest)
38  friend class HttpSessionStore;
39 
40 public:
41 
43  enum RequestStatus {waitForRequest, waitForHeader, waitForBody, complete, abort};
44 
49  HttpRequest(const int maxRequestSize, const int maxMultiPartSize);
50 
54  virtual ~HttpRequest();
55 
62  void readFromSocket(QTcpSocket* socket);
63 
68  RequestStatus getStatus() const;
69 
71  QByteArray getMethod() const;
72 
74  QByteArray getPath() const;
75 
77  const QByteArray& getRawPath() const;
78 
80  QByteArray getVersion() const;
81 
88  QByteArray getHeader(const QByteArray& name) const;
89 
94  QList<QByteArray> getHeaders(const QByteArray& name) const;
95 
97  QMultiMap<QByteArray,QByteArray> getHeaderMap() const;
98 
105  QByteArray getParameter(const QByteArray& name) const;
106 
111  QList<QByteArray> getParameters(const QByteArray& name) const;
112 
114  QMultiMap<QByteArray,QByteArray> getParameterMap() const;
115 
117  QByteArray getBody() const;
118 
125  static QByteArray urlDecode(const QByteArray source);
126 
135  QTemporaryFile* getUploadedFile(const QByteArray fieldName) const;
136 
141  QByteArray getCookie(const QByteArray& name) const;
142 
144  QMap<QByteArray,QByteArray>& getCookieMap();
145 
151  QHostAddress getPeerAddress() const;
152 
153 private:
154 
156  QMultiMap<QByteArray,QByteArray> headers;
157 
159  QMultiMap<QByteArray,QByteArray> parameters;
160 
162  QMap<QByteArray,QTemporaryFile*> uploadedFiles;
163 
165  QMap<QByteArray,QByteArray> cookies;
166 
168  QByteArray bodyData;
169 
171  QByteArray method;
172 
174  QByteArray path;
175 
177  QByteArray decodedPath;
178 
180  QByteArray version;
181 
186  RequestStatus status;
187 
189  QHostAddress peerAddress;
190 
192  int maxSize;
193 
195  int maxMultiPartSize;
196 
198  int currentSize;
199 
201  int expectedBodySize;
202 
204  QByteArray currentHeader;
205 
207  QByteArray boundary;
208 
210  QTemporaryFile tempFile;
211 
213  void parseMultiPartFile();
214 
216  void readRequest(QTcpSocket* socket);
217 
219  void readHeader(QTcpSocket* socket);
220 
222  void readBody(QTcpSocket* socket);
223 
225  void decodeRequestParams();
226 
228  void extractCookies();
229 
231  QByteArray lineBuffer;
232 
233 };
234 
235 #endif // HTTPREQUEST_H
This object represents a single HTTP request.
Definition: httprequest.h:36
RequestStatus
Values for getStatus()
Definition: httprequest.h:43