diff --git a/api/restapi.cpp b/api/restapi.cpp index d64a346f8bc5e6ecd7dfe564fe7b21d155ad5088..aa8aa57470c7a1b661f0d2ace98e9d0029319591 100755 --- a/api/restapi.cpp +++ b/api/restapi.cpp @@ -24,15 +24,15 @@ RestApi::RestApi( QObject *parent, const QString &pBaseUrl, const QString &pApiUri ) : QObject( parent ), mApiUri( pApiUri ), mBaseUrl( pBaseUrl ) { qRegisterMetaType<RestApiRequest>( "RestApiRequest" ); - init(); } void RestApi::init() { + mNam = new QNetworkAccessManager(this); mApiLogin = QStringLiteral( "/login" ); mApiLogoff = QStringLiteral( "/logout" ); mCookieJar = new QNetworkCookieJar; - mNam.setCookieJar( mCookieJar ); + mNam->setCookieJar( mCookieJar ); mNetworkReplies.reserve( 100 ); mResponseBinding.reserve( 100 ); @@ -41,7 +41,7 @@ void RestApi::init() qRegisterMetaType<RestApiRequest>( "RestApiRequest" ); mStorage = PersistanceLayer::instance(); - connect( &mNam, &QNetworkAccessManager::finished, this, &RestApi::processNetworkRequest, Qt::UniqueConnection ); + connect( mNam, &QNetworkAccessManager::finished, this, &RestApi::processNetworkRequest, Qt::UniqueConnection ); connect( this, &RestApi::sendRequestSignal, this, &RestApi::sendRequestSlot, Qt::UniqueConnection ); } @@ -60,7 +60,7 @@ void RestApi::login( const QString &pUsername, const QString &pPassword ) request.setHeader( QNetworkRequest::ContentTypeHeader, QString( QStringLiteral( "application/x-www-form-urlencoded" ) ) ); request.setUrl( url ); qDebug() << "send rest api login to " + mApiUri + mApiLogin; - mNetworkReplies[mNam.post( request, data )] = methods::LOGIN; + mNetworkReplies[mNam->post( request, data )] = methods::LOGIN; } else { mLoginErrorString = QStringLiteral( "no username or password provided" ); emit( loginError() ); @@ -79,7 +79,7 @@ void RestApi::logout() request.setRawHeader( QByteArray( QByteArrayLiteral( "X-User-Id" ) ), QByteArray( mUserId.toLocal8Bit() ) ); - // mNetworkReplies[mNam.get( request )] = methods::LOGOFF; + // mNetworkReplies[mNam->get( request )] = methods::LOGOFF; } @@ -210,7 +210,7 @@ QNetworkReply *RestApi::post( const QString &pUrl, const QByteArray &pData, cons request.setAttribute( QNetworkRequest::HttpPipeliningAllowedAttribute, true ); request.setAttribute( QNetworkRequest::HTTP2AllowedAttribute, true ); request.setAttribute( QNetworkRequest::SpdyAllowedAttribute, true ); - QNetworkReply *reply = mNam.post( request, pData ); + QNetworkReply *reply = mNam->post( request, pData ); return reply; } @@ -225,7 +225,7 @@ QNetworkReply *RestApi::get( const QString &pUrl, const QString &pMimeType ) request.setAttribute( QNetworkRequest::HTTP2AllowedAttribute, true ); request.setAttribute( QNetworkRequest::SpdyAllowedAttribute, true ); - QNetworkReply *reply = mNam.get( request ); + QNetworkReply *reply = mNam->get( request ); return reply; } diff --git a/api/restapi.h b/api/restapi.h index 346e479bdcc17bcbb37171860408e3233120c8e7..e2f82f7a2c255f73d1ec69d61e324506172d488e 100755 --- a/api/restapi.h +++ b/api/restapi.h @@ -84,9 +84,9 @@ class RestApi: public QObject }; - QNetworkCookieJar *mCookieJar; + QNetworkCookieJar *mCookieJar = nullptr; - QNetworkAccessManager mNam; + QNetworkAccessManager *mNam = nullptr; QHash<QNetworkReply *, methods> mNetworkReplies; QHash<QNetworkReply *, RestApiRequest> mResponseBinding; @@ -113,6 +113,7 @@ class RestApi: public QObject public slots: void slotError( QNetworkReply::NetworkError error ); + void init(); signals: void loggedIn(); void fileDownloaded( QString pUrl, QString pTempfile ); @@ -122,7 +123,6 @@ class RestApi: public QObject protected: void processDownload( QNetworkReply *pReply ); - void init(); }; #endif // RESTAPI_H diff --git a/rocketchatserver.cpp b/rocketchatserver.cpp index 0b58700a7dea6565dbc390786c9c7a6b1f7e9a10..9439ea4a59814889030a5806c6beed4336927490 100755 --- a/rocketchatserver.cpp +++ b/rocketchatserver.cpp @@ -70,6 +70,8 @@ void RocketChatServerData::init() mChannels = new ChannelRepository( channelsModel, channelsModel, groupsModel, mMessagesModel ); + QMetaObject::invokeMethod(mRestApi,"init"); + connect( mDdpApi, &MeteorDDP::messageReceived, this, &RocketChatServerData::onDDPMessageReceived, Qt::UniqueConnection ); connect( mDdpApi, &MeteorDDP::ddpConnected, this, &RocketChatServerData::onDDPConnected, Qt::UniqueConnection ); connect( mDdpApi, &MeteorDDP::ddpDisconnected, this, &RocketChatServerData::onDDPDisonnected, Qt::UniqueConnection ); @@ -657,7 +659,11 @@ void RocketChatServerData::loginWithToken( const QString &pUsername, const QStri request->setSuccess( success ); request->setError( error ); +#ifdef Q_OS_IOS + mDdpApi->sendRequest(request); +#else sendDdprequest( request, true, true ); +#endif this->mUsername = pUsername; } else { qDebug() << "empty token";