• Main Page
  • Classes
  • Files
  • File List
  • File Members

lib/bfHttpServer/src/httprequest.h

Go to the documentation of this file.
00001 
00006 #ifndef HTTPREQUEST_H
00007 #define HTTPREQUEST_H
00008 
00009 #include <QByteArray>
00010 #include <QTcpSocket>
00011 #include <QMap>
00012 #include <QMultiMap>
00013 #include <QSettings>
00014 #include <QTemporaryFile>
00015 #include <QUuid>
00016 
00034 class HttpRequest {
00035     Q_DISABLE_COPY(HttpRequest)
00036     friend class HttpSessionStore;
00037 public:
00038 
00040     enum RequestStatus {waitForRequest, waitForHeader, waitForBody, complete, abort};
00041 
00046     HttpRequest(QSettings* settings);
00047 
00051     virtual ~HttpRequest();
00052 
00058     void readFromSocket(QTcpSocket& socket);
00059 
00064     RequestStatus getStatus() const;
00065 
00067     QByteArray getMethod() const;
00068 
00070     QByteArray getPath() const;
00071 
00073     QByteArray getVersion() const;
00074 
00081     QByteArray getHeader(const QByteArray& name) const;
00082 
00087     QList<QByteArray> getHeaders(const QByteArray& name) const;
00088 
00090     QMultiMap<QByteArray,QByteArray> getHeaderMap() const;
00091 
00098     QByteArray getParameter(const QByteArray& name) const;
00099 
00104     QList<QByteArray> getParameters(const QByteArray& name) const;
00105 
00107     QMultiMap<QByteArray,QByteArray> getParameterMap() const;
00108 
00110     QByteArray getBody() const;
00111 
00117     static QByteArray urlDecode(const QByteArray source);
00118 
00127     QTemporaryFile* getUploadedFile(const QByteArray fieldName);
00128 
00133     QByteArray getCookie(const QByteArray& name) const;
00134 
00136     QMap<QByteArray,QByteArray>& getCookieMap();
00137 
00138 private:
00139 
00141     QMultiMap<QByteArray,QByteArray> headers;
00142 
00144     QMultiMap<QByteArray,QByteArray> parameters;
00145 
00147     QMap<QByteArray,QTemporaryFile*> uploadedFiles;
00148 
00150     QMap<QByteArray,QByteArray> cookies;
00151 
00153     QByteArray bodyData;
00154 
00156     QByteArray method;
00157 
00159     QByteArray path;
00160 
00162     QByteArray version;
00163 
00168     RequestStatus status;
00169 
00171     int maxSize;
00172 
00174     int maxMultiPartSize;
00175 
00177     QString tempDir;
00178 
00180     int currentSize;
00181 
00183     int expectedBodySize;
00184 
00186     QByteArray currentHeader;
00187 
00189     QByteArray boundary;
00190 
00192     QTemporaryFile tempFile;
00193 
00195     void parseMultiPartFile();
00196 
00198     void readRequest(QTcpSocket& socket);
00199 
00201     void readHeader(QTcpSocket& socket);
00202 
00204     void readBody(QTcpSocket& socket);
00205 
00207     void decodeRequestParams();
00208 
00210     void extractCookies();
00211 
00212 };
00213 
00214 #endif // HTTPREQUEST_H

Generated on Mon Dec 26 2011 12:09:22 for QtWebApp by  doxygen 1.7.1