PageRenderTime 203ms CodeModel.GetById 91ms app.highlight 8ms RepoModel.GetById 102ms app.codeStats 0ms

/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebevent.h

http://github.com/tomahawk-player/tomahawk
C++ Header | 153 lines | 95 code | 24 blank | 34 comment | 0 complexity | 7a9d588fb50467ca4bc9d105a5a4dbde MD5 | raw file
  1/****************************************************************************
  2 **
  3 ** Copyright (C) Qxt Foundation. Some rights reserved.
  4 **
  5 ** This file is part of the QxtWeb module of the Qxt library.
  6 **
  7 ** This library is free software; you can redistribute it and/or modify it
  8 ** under the terms of the Common Public License, version 1.0, as published
  9 ** by IBM, and/or under the terms of the GNU Lesser General Public License,
 10 ** version 2.1, as published by the Free Software Foundation.
 11 **
 12 ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY
 13 ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
 14 ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR
 15 ** FITNESS FOR A PARTICULAR PURPOSE.
 16 **
 17 ** You should have received a copy of the CPL and the LGPL along with this
 18 ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files
 19 ** included with the source distribution for more information.
 20 ** If you did not receive a copy of the licenses, contact the Qxt Foundation.
 21 **
 22 ** <http://libqxt.org>  <foundation@libqxt.org>
 23 **
 24 ****************************************************************************/
 25
 26#ifndef QXTWEBEVENT_H
 27#define QXTWEBEVENT_H
 28
 29#include <qxtglobal.h>
 30#include <QString>
 31#include <QByteArray>
 32#include <QStringList>
 33#include <QPointer>
 34#include <QUrl>
 35#include <QMultiHash>
 36#include <QDateTime>
 37QT_FORWARD_DECLARE_CLASS(QIODevice)
 38class QxtWebContent;
 39
 40class QXT_WEB_EXPORT QxtWebEvent
 41{
 42public:
 43    enum EventType
 44    {
 45        None = 0,
 46        Request,
 47        FileUpload,
 48        Page,
 49        StoreCookie,
 50        RemoveCookie,
 51        Redirect
 52    };
 53
 54    QxtWebEvent(EventType type, int sessionID);
 55    virtual ~QxtWebEvent();
 56
 57    inline EventType type() const
 58    {
 59        return m_type;
 60    }
 61    const int sessionID;
 62
 63private:
 64    EventType m_type;
 65};
 66
 67class QXT_WEB_EXPORT QxtWebRequestEvent : public QxtWebEvent
 68{
 69public:
 70    QxtWebRequestEvent(int sessionID, int requestID, const QUrl& url);
 71    ~QxtWebRequestEvent();
 72
 73    const int requestID;
 74
 75    QUrl url;
 76    const QUrl originalUrl;
 77    QString contentType;
 78    QPointer<QxtWebContent> content;
 79    QString method;
 80    QString remoteAddress;
 81
 82    QMultiHash<QString, QString> cookies;
 83    QMultiHash<QString, QString> headers;
 84};
 85
 86/* TODO: refactor and implement
 87class QXT_WEB_EXPORT QxtWebFileUploadEvent : public QxtWebEvent {
 88public:
 89    QxtWebFileUploadEvent(int sessionID);
 90
 91    QString filename;
 92    int contentLength;
 93    QIODevice* content;
 94};
 95*/
 96
 97class QxtWebRedirectEvent;
 98class QXT_WEB_EXPORT QxtWebPageEvent : public QxtWebEvent
 99{
100public:
101    QxtWebPageEvent(int sessionID, int requestID, QSharedPointer<QIODevice> source);
102    QxtWebPageEvent(int sessionID, int requestID, QByteArray source);    // creates a QBuffer
103    virtual ~QxtWebPageEvent();
104
105    QSharedPointer<QIODevice> dataSource;          // data is read from this device and written to the client
106    bool chunked;
107    bool streaming;
108
109    const int requestID;
110    int status;
111    QByteArray statusMessage;
112    QByteArray contentType;
113
114    QMultiHash<QString, QString> headers;
115
116private:
117    friend class QxtWebRedirectEvent;
118    QxtWebPageEvent(QxtWebEvent::EventType typeOverride, int sessionID, int requestID, QByteArray source);
119};
120
121class QXT_WEB_EXPORT QxtWebErrorEvent : public QxtWebPageEvent
122{
123public:
124    QxtWebErrorEvent(int sessionID, int requestID, int status, QByteArray statusMessage);
125};
126
127class QXT_WEB_EXPORT QxtWebStoreCookieEvent : public QxtWebEvent
128{
129public:
130    QxtWebStoreCookieEvent(int sessionID, QString name, QString data, QDateTime expiration = QDateTime());
131
132    QString name;
133    QString data;
134    QDateTime expiration;
135};
136
137class QXT_WEB_EXPORT QxtWebRemoveCookieEvent : public QxtWebEvent
138{
139public:
140    QxtWebRemoveCookieEvent(int sessionID, QString name);
141
142    QString name;
143};
144
145class QXT_WEB_EXPORT QxtWebRedirectEvent : public QxtWebPageEvent
146{
147public:
148    QxtWebRedirectEvent(int sessionID, int requestID, const QString& destination, int statusCode = 302);
149
150    QString destination;
151};
152
153#endif // QXTWEBEVENT_H