Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #ifndef WOB_INTERFACE_H
00008 #define WOB_INTERFACE_H
00009
00010 #include <QMap>
00011 #include <QObject>
00012 #include <QUrl>
00013 #include <QSslError>
00014
00015 #include <WOb>
00016
00017 class QNetworkAccessManager;
00018 class QNetworkRequest;
00019 class QNetworkReply;
00020 class WServerRequest;
00021 class WServerReply;
00022
00023 class WInterface:public QObject
00024 {
00025 Q_OBJECT
00026 Q_PROPERTY(QUrl url READ url)
00027 Q_PROPERTY(bool useProxy READ useProxy)
00028 Q_PROPERTY(bool useProxyAuth READ useProxyAuth)
00029 Q_PROPERTY(QString proxyHost READ proxyHost)
00030 Q_PROPERTY(unsigned short proxyPort READ proxyPort)
00031 Q_PROPERTY(QString proxyUser READ proxyUser)
00032 Q_PROPERTY(QString proxyPassword READ proxyPassword)
00033 Q_PROPERTY(int webTimeout READ webTimeout)
00034 Q_PROPERTY(QString name READ name)
00035 Q_ENUMS(LogLevel)
00036 Q_PROPERTY(LogLevel logLevel READ logLevel)
00037 protected:
00039 WInterface(QString name);
00040
00041 friend class WTransaction;
00042 friend class WTransaction_Private;
00044 QNetworkReply* post(const QNetworkRequest&request,const QByteArray&data);
00045
00046 friend class WServer;
00048 virtual WServerReply execute(const WServerRequest&);
00049
00050 public:
00051 virtual ~WInterface();
00053 virtual QMap<QString,QString> headers(QString)const;
00054
00056 QUrl url()const{return m_url;}
00057
00059 bool useProxy()const{return m_proxyhost!="";}
00061 bool useProxyAuth()const{return m_proxyuser!="";}
00063 QString proxyHost()const{return m_proxyhost;}
00065 unsigned short proxyPort()const{return m_proxyport;}
00067 QString proxyUser()const{return m_proxyuser;}
00069 QString proxyPassword()const{return m_proxypass;}
00070
00072 int webTimeout()const{return m_wtimeout;}
00073
00075 QString name()const;
00076
00078 static WInterface*instance(QString);
00079
00081 enum LogLevel {
00083 LogNone=0,
00085 LogMinimal=1,
00087 LogInfo=2,
00089 LogOnError=0x12,
00091 LogDetailed=0xff
00092 };
00093
00095 LogLevel logLevel()const{return loglvl;}
00096
00098 QString libraryVersionInfo(WOb::VersionInfo)const;
00100 static QString staticLibraryVersionInfo(WOb::VersionInfo);
00102 virtual QString wocVersionInfo(WOb::VersionInfo)const=0;
00104 virtual QString versionInfo(WOb::VersionInfo)const=0;
00105
00107 virtual QString commVersion()const{return versionInfo(WOb::VersionComm);}
00109 virtual QString needCommVersion()const{return versionInfo(WOb::VersionNeedComm);}
00111 virtual QString version()const{return versionInfo(WOb::VersionHR);}
00112
00113 public slots:
00115 void setLogLevel(WInterface::LogLevel l){loglvl=l;}
00116
00118 void setWebTimeout(int t){if(t>0)m_wtimeout=t;}
00119
00121 void resetProxy(){m_proxyhost="";m_proxyport=0;m_proxyuser="";m_proxypass="";}
00123 void setProxy(QString proxyhost,unsigned short proxyport,QString proxyuser=QString(),QString proxypassword=QString());
00124
00126 void setUrl(QUrl u){m_url=u;}
00127
00129 virtual void sslErrors(QNetworkReply *,const QList<QSslError>&);
00130
00131 private:
00132 static QMap<QString,WInterface*>inst;
00133 QUrl m_url;
00134 QString m_proxyhost,m_proxyuser,m_proxypass;
00135 unsigned short m_proxyport;
00136 int m_wtimeout;
00137 LogLevel loglvl;
00138 QNetworkAccessManager*m_netman;
00139 };
00140
00141 #endif