1
0
mirror of https://gitee.com/drabel/LibQQt.git synced 2025-01-04 10:18:44 +08:00
LibQQt/src/network/qqtwebaccessmanager.h

187 lines
5.9 KiB
C
Raw Normal View History

2017-11-22 19:22:53 +08:00
#ifndef QQTWEBWORKCLIENT_H
#define QQTWEBWORKCLIENT_H
#include <QNetworkAccessManager>
#include <QNetworkReply>
//import this struct will not build fail
#include <QNetworkProxy>
#include <QSslError>
#include <qqt-qt.h>
#include <qqt-local.h>
#include <qqtcore.h>
2017-11-23 12:33:32 +08:00
#include <QUuid>
2017-11-22 19:22:53 +08:00
class QQTSHARED_EXPORT QQtWebAccessSession : public QObject
{
Q_OBJECT
public:
2017-11-23 12:33:32 +08:00
explicit QQtWebAccessSession ( QObject* parent = 0 ) :
QObject ( parent ) {
m_pTimer = new QTimer ( this );
m_pTimer->setSingleShot ( true );
m_pTimer->setInterval ( 10000 );
}
2017-11-22 19:22:53 +08:00
virtual ~QQtWebAccessSession() {}
2017-11-23 12:33:32 +08:00
void setTimeOut ( int timeout ) {
m_pTimer->setInterval ( timeout );
}
QTimer* getTimer() {
return m_pTimer;
}
QNetworkReply* getWebAccessReply() {
return m_pNetworkReply;
}
void setWebAccessReply ( QNetworkReply* reply ) {
m_pNetworkReply = reply;
}
QString getWebAccessUrl() {
return m_strUrl;
}
void setWebAccessUrl ( QString strUrl ) {
m_strUrl = strUrl;
}
QString getWebAccessSessionName() {
return m_strSessionName;
}
void setWebAccessSessionName ( QString strSessionName ) {
m_strSessionName = strSessionName;
}
private:
//call back
QNetworkReply* m_pNetworkReply;
//call time out
QTimer* m_pTimer;
//calling url [user set]
QString m_strUrl;
2017-11-22 19:22:53 +08:00
/**
2017-11-23 12:33:32 +08:00
* @brief m_sessionName be a uuid [user set or auto]
2017-11-22 19:22:53 +08:00
* talk with whom, which protocol, req content, all represented by this name;
*/
2017-11-23 12:33:32 +08:00
QString m_strSessionName;
2017-11-22 19:22:53 +08:00
} ;
2017-11-23 12:33:32 +08:00
class QQTSHARED_EXPORT QQtWebAccessSessionManager : public QObject
{
Q_OBJECT
public:
explicit QQtWebAccessSessionManager ( QObject* parent = 0 ) :
QObject ( parent ) {}
virtual ~QQtWebAccessSessionManager() {}
/**
* @brief addWebAccessSession user new custom session and
* please set session name different.
* @return session name
*/
QString addWebAccessSession ( QQtWebAccessSession* session ) {
if ( !session )
return QString();
m_listWebAccessSession.push_back ( session );
return session->getWebAccessSessionName();
}
void removeWebAccessSession ( QQtWebAccessSession* session ) {
if ( !session )
return;
m_listWebAccessSession.removeOne ( session );
}
/**
* @brief newWebAccessSession
* QQtWebAccessSessionManager create this session and
* user set
* @return
*/
QQtWebAccessSession* newWebAccessSession();
QNetworkReply* getReplyHandlerByUrl ( QString& strUrl );
QString getSessionNameByUrl ( QString& strUrl );
QQtWebAccessSession* getSessionByUrl ( QString& strUrl );
QString getRequestUrlByReply ( QNetworkReply* reply );
QString getSessionNameByReply ( QNetworkReply* reply );
QQtWebAccessSession* getSessionByReply ( QNetworkReply* reply );
QNetworkReply* getReplyHandlerBySessionName ( QString& strSessionName );
QString getRequestUrlBySessionName ( QString& strSessionName );
QQtWebAccessSession* getSessionBySessionName ( QString& strSessionName );
QNetworkReply* getReplyHandlerByTimer ( QTimer* timer );
QString getRequestUrlByTimer ( QTimer* timer );
QQtWebAccessSession* getSessionByTimer ( QTimer* timer );
QNetworkReply* getReplyHandler ( QQtWebAccessSession* session );
QString getRequestUrl ( QQtWebAccessSession* session );
QString getSessionName ( QQtWebAccessSession* session );
protected:
private:
QList<QQtWebAccessSession*> m_listWebAccessSession;
friend class QQtWebAccessManager;
} ;
2017-11-22 19:22:53 +08:00
/**
2017-11-23 12:33:32 +08:00
* @brief The QQtWebAccessManager class
* XXProtocol One Ftp Http QWebSocket(Custom Web Protocol) ...()
2017-11-22 19:22:53 +08:00
* Multi QNetworkAccessManager
2017-11-23 12:33:32 +08:00
* Multi QNetworkAccessManager
2017-11-22 19:22:53 +08:00
* need ssl
* Qt team supportedSchemes
2017-11-23 12:33:32 +08:00
* sessionsession当中完整的保存就好了
2017-11-22 19:22:53 +08:00
*/
class QQTSHARED_EXPORT QQtWebAccessManager : public QNetworkAccessManager
{
Q_OBJECT
public:
2017-11-23 12:33:32 +08:00
explicit QQtWebAccessManager ( QObject* parent = 0 );
/**
* @brief sendGetRequest
* use for custom session;
* @param session
*/
void sendGetRequest ( QQtWebAccessSession* session );
2017-11-22 19:22:53 +08:00
2017-11-23 12:33:32 +08:00
QQtWebAccessSession* sendGetRequest ( QString& strUrl );
QQtWebAccessSession* sendGetRequests ( QStringList& strUrls );
QQtWebAccessSession* sendGetRequest ( QNetworkRequest& netRequest );
QQtWebAccessSession* sendGetRequests ( QList<QNetworkRequest*>& netRequests );
2017-11-22 19:22:53 +08:00
2017-11-23 12:33:32 +08:00
QQtWebAccessSession* sendPostRequest ( QString& strUrl );
2017-11-22 19:22:53 +08:00
signals:
2017-11-23 12:33:32 +08:00
void updateUploadProgress ( QQtWebAccessSession* session, qint64 bytesSent, qint64 bytesTotal );
void updateDownloadProgress ( QQtWebAccessSession* session, qint64 bytesReceived, qint64 bytesTotal );
2017-11-22 19:22:53 +08:00
//reply->readAll but maybe not all data once
2017-11-23 12:33:32 +08:00
void readyRead ( QQtWebAccessSession* session );
2017-11-22 19:22:53 +08:00
//reply->readAll all data once in theory
2017-11-23 12:33:32 +08:00
void replyFinished ( QQtWebAccessSession* session );
void replyTimeOut ( QQtWebAccessSession* session );
2017-11-22 19:22:53 +08:00
public slots:
private slots:
2017-11-23 12:33:32 +08:00
void finished ( QNetworkReply* reply );
void authenticationRequired ( QNetworkReply*, QAuthenticator* );
void proxyAuthenticationRequired ( QNetworkProxy, QAuthenticator* );
void sslErrors ( QNetworkReply*, QList<QSslError> );
void networkAccessibleChanged ( QNetworkAccessManager::NetworkAccessibility );
2017-11-22 19:22:53 +08:00
void networkSessionConnected();
void localReplyTimeOut();
void localReadyRead();
2017-11-23 12:33:32 +08:00
void localUpdateUploadProgress ( qint64 bytesSent, qint64 bytesTotal );
void localUpdateDownloadProgress ( qint64 bytesReceived, qint64 bytesTotal );
2017-11-22 19:22:53 +08:00
private:
2017-11-23 12:33:32 +08:00
QQtWebAccessSessionManager* manager;
2017-11-22 19:22:53 +08:00
2017-11-23 12:33:32 +08:00
friend class QQtWebAccessSessionManager;
2017-11-22 19:22:53 +08:00
};
#endif // QQTWEBWORKCLIENT_H