1 #include "Communication.h"
2 #include "ConnectionSettings.h"
3 #include <QAuthenticator>
4 #include "Configuration.h"
8 Communication::Communication() :
12 iHttp = new QHttp(Configuration::instance()->getServerUrl().toString()/*Configuration::instance()->getServerUrl().toString()*/, QHttp::ConnectionModeHttps );
16 SIGNAL( readyRead( const QHttpResponseHeader& ) ),
18 SLOT( processResponse( const QHttpResponseHeader& ) )
21 SIGNAL( requestStarted( int ) ),
23 SLOT( handleRequestStarted( int ) )
26 SIGNAL( requestFinished( int, bool ) ),
28 SLOT( handleResults( int, bool ) )
31 SIGNAL( dataReadProgress( int, int ) ),
33 SLOT( handleReadProgress( int, int ) )
36 SIGNAL( authenticationRequired( const QString&, quint16, QAuthenticator* ) ),
38 SLOT( handleAuthentication( const QString&, quint16, QAuthenticator* ) ) );
40 SIGNAL( sslErrors( const QList<QSslError>& ) ),
42 SLOT( ignoreSslErrors() )/*this, SLOT( notifySsl( const QList<QSslError>& ) )*/
44 connect(Configuration::instance(),SIGNAL(configrationChanged()), SLOT(configurationChanged()));
47 Communication::~Communication()
49 //delete iConnectionSettings;
51 QList<QByteArray*> responses = iResponses.values();
52 while(!responses.isEmpty())
53 delete responses.takeFirst();
56 void Communication::processResponse( const QHttpResponseHeader& aHeader )
58 if ( aHeader.statusCode() == 200 )
60 if( iResponses.contains( iCurrentRequest ) )
62 QByteArray* response = iResponses.value( iCurrentRequest, NULL );
63 response->append( iHttp->readAll() );
68 void Communication::handleRequestStarted( int aRequestId )
70 if( iResponses.contains( aRequestId ) )
72 iCurrentRequest = aRequestId;
73 emit requestStarted( aRequestId );
77 void Communication::handleResults( int aId, bool /*aError*/ )
79 if( iCurrentRequest != 0 && aId == iCurrentRequest )
83 int err = (int)iHttp->error();
84 if( iHttp->error() == QHttp::Aborted && iAuthFailCount > 1 )
86 emit requestFinished( aId, err );
90 void Communication::handleAuthentication( const QString& /*aHost*/, quint16 /*aPort*/, QAuthenticator* aAuthenticator )
93 aAuthenticator->setPassword( Configuration::instance()->getPassword() );
94 aAuthenticator->setUser( Configuration::instance()->getUsername() );
96 if( iAuthFailCount > 1 )
102 int Communication::request( const QString &aCommand, const QByteArray &aContent )
104 if( iAuthFailCount > 1 )
107 iHttp->setHost(Configuration::instance()->getServerUrl().toString(),QHttp::ConnectionModeHttps);
108 QHttpRequestHeader header( QString( "POST" ), QString( "/ews/exchange.asmx" ) );
110 header.setValue( "Host",Configuration::instance()->getServerUrl().toString() );
112 QString command = aCommand;
113 header.setContentType( command );
115 int id = iHttp->request( header, aContent );
116 if( iResponses.contains( id ) )
118 QByteArray* response = iResponses.value( id, NULL );
123 iResponses.insert( id, new QByteArray() );
129 QByteArray* Communication::response( int aRequestId )
131 if( !iResponses.contains( aRequestId ) )
133 QByteArray* response = iResponses.take( aRequestId );
137 void Communication::handleReadProgress( int aDone, int aTotal )
139 emit readProgress( iCurrentRequest, aDone, aTotal );
142 void Communication::configurationChanged()
144 iHttp->setHost(Configuration::instance()->getServerUrl().toString(),QHttp::ConnectionModeHttps );