#ifndef QHTTP_H
#define QHTTP_H 
#include <QtCore/qobject.h>
#include <QtCore/qstringlist.h>
#include <QtCore/qmap.h>
#include <QtCore/qpair.h>
typedef enum QtValidLicenseForNetworkModule QtNetworkModule;
#ifndef QT_NO_HTTP
struct QTcpSocket;
struct QHttpPrivate;
struct QHttpHeaderPrivate;
class QHttpHeader{
   public: QHttpHeader();
   public: QHttpHeader(class QHttpHeader const & header);
   public: QHttpHeader(class QString const & str);
   public: virtual ~QHttpHeader();
   public: class QHttpHeader& operator =(class QHttpHeader const & h);
   public: void setValue(class QString const & key, class QString const & value);
   public: void setValues(class QList < class QPair < class QString, class QString > > const & values);
   public: void addValue(class QString const & key, class QString const & value);
   public: class QList < class QPair < class QString, class QString > > values() const
   public: bool hasKey(class QString const & key) const
   public: class QStringList keys() const
   public: class QString value(class QString const & key) const
   public: class QStringList allValues(class QString const & key) const
   public: void removeValue(class QString const & key);
   public: void removeAllValues(class QString const & key);
   public: bool hasContentLength() const
   public: uint contentLength() const
   public: void setContentLength(int len);
   public: bool hasContentType() const
   public: class QString contentType() const
   public: void setContentType(class QString const & type);
   public: virtual class QString toString() const
   public: bool isValid() const
   public: virtual int majorVersion() const = 0;
   public: virtual int minorVersion() const = 0;
   protected: virtual bool parseLine(class QString const & line, int number);
   protected: bool parse(class QString const & str);
   protected: void setValid(bool);
   protected: QHttpHeader(struct QHttpHeaderPrivate& dd, class QString const & str = QString::QString());
   protected: QHttpHeader(struct QHttpHeaderPrivate& dd, class QHttpHeader const & header);
   protected: struct QHttpHeaderPrivate* d_ptr;
   private: inline struct QHttpHeaderPrivate* d_func();
   private: inline struct QHttpHeaderPrivate const * d_func() const
   friend struct QHttpHeaderPrivate;
};
struct QHttpResponseHeaderPrivate;
class QHttpResponseHeader: public QHttpHeader{
   public: QHttpResponseHeader();
   public: QHttpResponseHeader(class QHttpResponseHeader const & header);
   public: QHttpResponseHeader(class QString const & str);
   public: QHttpResponseHeader(int code, class QString const & text = QString::QString(), int majorVer = 1, int minorVer = 1);
   public: class QHttpResponseHeader& operator =(class QHttpResponseHeader const & header);
   public: void setStatusLine(int code, class QString const & text = QString::QString(), int majorVer = 1, int minorVer = 1);
   public: int statusCode() const
   public: class QString reasonPhrase() const
   public: virtual int majorVersion() const
   public: virtual int minorVersion() const
   public: virtual class QString toString() const
   protected: virtual bool parseLine(class QString const & line, int number);
   private: inline struct QHttpResponseHeaderPrivate* d_func();
   private: inline struct QHttpResponseHeaderPrivate const * d_func() const
   friend struct QHttpResponseHeaderPrivate;
   friend struct QHttpPrivate;
};
struct QHttpRequestHeaderPrivate;
class QHttpRequestHeader: public QHttpHeader{
   public: QHttpRequestHeader();
   public: QHttpRequestHeader(class QString const & method, class QString const & path, int majorVer = 1, int minorVer = 1);
   public: QHttpRequestHeader(class QHttpRequestHeader const & header);
   public: QHttpRequestHeader(class QString const & str);
   public: class QHttpRequestHeader& operator =(class QHttpRequestHeader const & header);
   public: void setRequest(class QString const & method, class QString const & path, int majorVer = 1, int minorVer = 1);
   public: class QString method() const
   public: class QString path() const
   public: virtual int majorVersion() const
   public: virtual int minorVersion() const
   public: virtual class QString toString() const
   protected: virtual bool parseLine(class QString const & line, int number);
   private: inline struct QHttpRequestHeaderPrivate* d_func();
   private: inline struct QHttpRequestHeaderPrivate const * d_func() const
   friend struct QHttpRequestHeaderPrivate;
};
class QHttp: public QObject{
   public: virtual struct QMetaObject const * metaObject() const
   public: static struct QMetaObject const staticMetaObject;
   public: virtual void* qt_metacast(char const *);
   public: static inline class QString tr(char const * s, char const * c = 0);
   public: static inline class QString trUtf8(char const * s, char const * c = 0);
   public: static inline class QString tr(char const * s, char const * c, int n);
   public: static inline class QString trUtf8(char const * s, char const * c, int n);
   public: virtual int qt_metacall(enum QMetaObject::Call, int, void* *);
   public: explicit QHttp(class QObject* parent = 0);
   public: QHttp(class QString const & hostname, quint16 port = 80, class QObject* parent = 0);
   public: virtual ~QHttp();
   public: enum State{
      Unconnected = 0,
      HostLookup = 1,
      Connecting = 2,
      Sending = 3,
      Reading = 4,
      Connected = 5,
      Closing = 6,
   };
   public: enum Error{
      NoError = 0,
      UnknownError = 1,
      HostNotFound = 2,
      ConnectionRefused = 3,
      UnexpectedClose = 4,
      InvalidResponseHeader = 5,
      WrongContentLength = 6,
      Aborted = 7,
   };
   public: int setHost(class QString const & hostname, quint16 port = 80);
   public: int setSocket(struct QTcpSocket* socket);
   public: int setUser(class QString const & username, class QString const & password = QString::QString());
   public: int setProxy(class QString const & host, int port, class QString const & username = QString::QString(), class QString const & password = QString::QString());
   public: int get(class QString const & path, class QIODevice* to = 0);
   public: int post(class QString const & path, class QIODevice* data, class QIODevice* to = 0);
   public: int post(class QString const & path, class QByteArray const & data, class QIODevice* to = 0);
   public: int head(class QString const & path);
   public: int request(class QHttpRequestHeader const & header, class QIODevice* device = 0, class QIODevice* to = 0);
   public: int request(class QHttpRequestHeader const & header, class QByteArray const & data, class QIODevice* to = 0);
   public: int closeConnection();
   public: int close();
   public: qint64 bytesAvailable() const
   public: qint64 read(char* data, qint64 maxlen);
   public: class QByteArray readAll();
   public: int currentId() const
   public: class QIODevice* currentSourceDevice() const
   public: class QIODevice* currentDestinationDevice() const
   public: class QHttpRequestHeader currentRequest() const
   public: class QHttpResponseHeader lastResponse() const
   public: bool hasPendingRequests() const
   public: void clearPendingRequests();
   public: enum QHttp::State state() const
   public: enum QHttp::Error error() const
   public: class QString errorString() const
   public: void abort();
   protected: void stateChanged(int);
   protected: void responseHeaderReceived(class QHttpResponseHeader const & resp);
   protected: void readyRead(class QHttpResponseHeader const & resp);
   protected: void dataSendProgress(int, int);
   protected: void dataReadProgress(int, int);
   protected: void requestStarted(int);
   protected: void requestFinished(int, bool);
   protected: void done(bool);
   private: QHttp(class QHttp const &);
   private: class QHttp& operator =(class QHttp const &);
   private: inline struct QHttpPrivate* d_func();
   private: inline struct QHttpPrivate const * d_func() const
   friend struct QHttpPrivate;
   friend struct QHttpNormalRequest;
   friend struct QHttpSetHostRequest;
   friend struct QHttpSetSocketRequest;
   friend struct QHttpSetUserRequest;
   friend struct QHttpSetProxyRequest;
   friend struct QHttpCloseRequest;
   friend struct QHttpPGHRequest;
};
struct QHttpNormalRequest;
struct QHttpSetHostRequest;
struct QHttpSetSocketRequest;
struct QHttpSetUserRequest;
struct QHttpSetProxyRequest;
struct QHttpCloseRequest;
struct QHttpPGHRequest;
#endif // QT_NO_HTTP
#endif // QHTTP_H