1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-21 21:25:52 +02:00

Remove some old cruft and start getting things ready for Kiva

This commit is contained in:
Jeff Mitchell
2014-03-27 13:55:25 -04:00
parent 9617ef84fe
commit 0f4b12f156
7 changed files with 66 additions and 24 deletions

View File

@@ -183,8 +183,6 @@ HatchetAccount::sipPlugin( bool create )
tLog() << Q_FUNC_INFO;
m_tomahawkSipPlugin = QPointer< HatchetSipPlugin >( new HatchetSipPlugin( this ) );
connect( m_tomahawkSipPlugin.data(), SIGNAL( authUrlDiscovered( Tomahawk::Accounts::HatchetAccount::Service, QString ) ),
this, SLOT( authUrlDiscovered( Tomahawk::Accounts::HatchetAccount::Service, QString ) ) );
return m_tomahawkSipPlugin.data();
}
@@ -524,20 +522,6 @@ HatchetAccount::onFetchAccessTokenFinished( QNetworkReply* reply, const QString&
}
QString
HatchetAccount::authUrlForService( const Service &service ) const
{
return m_extraAuthUrls.value( service, QString() );
}
void
HatchetAccount::authUrlDiscovered( Service service, const QString &authUrl )
{
m_extraAuthUrls[ service ] = authUrl;
}
QVariantMap
HatchetAccount::parseReply( QNetworkReply* reply, bool& okRet ) const
{

View File

@@ -89,8 +89,6 @@ public:
void fetchAccessToken( const QString& type = "dreamcatcher" );
QString authUrlForService( const Service& service ) const;
signals:
void authError( QString error, int statusCode, const QVariantMap );
void deauthenticated();
@@ -99,7 +97,6 @@ signals:
private slots:
void onPasswordLoginFinished( QNetworkReply*, const QString& username );
void onFetchAccessTokenFinished( QNetworkReply*, const QString& type );
void authUrlDiscovered( Tomahawk::Accounts::HatchetAccount::Service service, const QString& authUrl );
private:
QByteArray refreshToken() const;
@@ -119,7 +116,6 @@ private:
Account::ConnectionState m_state;
QPointer< HatchetSipPlugin > m_tomahawkSipPlugin;
QHash< Service, QString > m_extraAuthUrls;
static HatchetAccount* s_instance;
friend class HatchetAccountConfig;

View File

@@ -65,7 +65,6 @@ public slots:
signals:
void connectWebSocket() const;
void disconnectWebSocket() const;
void authUrlDiscovered( Tomahawk::Accounts::HatchetAccount::Service service, const QString& authUrl ) const;
void rawBytes( QByteArray bytes ) const;
private slots:

View File

@@ -23,10 +23,11 @@
typedef typename websocketpp::lib::error_code error_code;
WebSocket::WebSocket( const QString& url )
WebSocket::WebSocket( const QString& url, const QString& authorizationHeader )
: QObject( nullptr )
, m_disconnecting( false )
, m_url( url )
, m_authorizationHeader( authorizationHeader )
, m_outputStream()
, m_lastSocketState( QAbstractSocket::UnconnectedState )
, m_connectionTimer( this )
@@ -46,12 +47,16 @@ WebSocket::WebSocket( const QString& url )
WebSocket::~WebSocket()
{
if ( m_connection )
{
m_connection.reset();
}
m_client.reset();
if ( m_socket )
{
delete m_socket.data();
}
}
@@ -60,11 +65,32 @@ WebSocket::setUrl( const QString &url )
{
tLog() << Q_FUNC_INFO << "Setting url to" << url;
if ( m_url == url )
{
return;
}
// We'll let automatic reconnection handle things
if ( m_socket && m_socket->isEncrypted() )
{
disconnectWs();
}
}
void
WebSocket::setAuthorizationHeader( const QString &authorizationHeader )
{
tLog() << Q_FUNC_INFO << "Setting authorization header";
if ( m_authorizationHeader == authorizationHeader )
{
return;
}
// We'll let automatic reconnection handle things
if ( m_socket && m_socket->isEncrypted() )
{
disconnectWs();
}
}
@@ -76,10 +102,14 @@ WebSocket::connectWs()
if ( m_socket )
{
if ( m_socket->isEncrypted() )
{
return;
}
if ( m_socket->state() == QAbstractSocket::ClosingState )
{
QMetaObject::invokeMethod( this, "connectWs", Qt::QueuedConnection );
}
return;
}
@@ -119,9 +149,13 @@ void
WebSocket::disconnectSocket()
{
if ( m_socket && m_socket->state() == QAbstractSocket::ConnectedState )
{
m_socket->disconnectFromHost();
}
else
{
QMetaObject::invokeMethod( this, "cleanup", Qt::QueuedConnection );
}
QTimer::singleShot( 5000, this, SLOT( cleanup() ) ); //safety
}
@@ -178,7 +212,9 @@ WebSocket::sslErrors( const QList< QSslError >& errors )
{
tLog() << Q_FUNC_INFO << "Encountered errors when trying to connect via SSL";
foreach( QSslError error, errors )
{
tLog() << Q_FUNC_INFO << "Error: " << error.errorString();
}
QMetaObject::invokeMethod( this, "disconnectWs", Qt::QueuedConnection );
}
@@ -199,6 +235,10 @@ WebSocket::encrypted()
disconnectWs();
return;
}
if ( !m_authorizationHeader.isEmpty() )
{
m_connection->replace_header( "Authorization", m_authorizationHeader.toStdString() );
}
m_client->connect( m_connection );
QMetaObject::invokeMethod( this, "readOutput", Qt::QueuedConnection );
emit connected();
@@ -241,17 +281,23 @@ WebSocket::readOutput()
m_connectionTimer.stop();
}
else if ( !m_disconnecting )
{
QTimer::singleShot( 200, this, SLOT( readOutput() ) );
}
}
else
{
m_connectionTimer.stop();
}
}
void
WebSocket::socketReadyRead()
{
if ( !m_socket || !m_socket->isEncrypted() )
{
return;
}
if ( !m_socket->isValid() )
{
@@ -296,7 +342,9 @@ WebSocket::encodeMessage( const QByteArray &bytes )
m_connectionTimer.start();
}
else
{
m_connection->send( std::string( bytes.constData() ), websocketpp::frame::opcode::TEXT );
}
QMetaObject::invokeMethod( this, "readOutput", Qt::QueuedConnection );
}

View File

@@ -39,7 +39,7 @@ class WebSocket : public QObject
{
Q_OBJECT
public:
explicit WebSocket( const QString& url );
explicit WebSocket( const QString& url, const QString& authorizationHeader = QString() );
virtual ~WebSocket();
signals:
@@ -49,6 +49,7 @@ signals:
public slots:
void setUrl( const QString& url );
void setAuthorizationHeader( const QString& authorizationHeader );
void connectWs();
void disconnectWs( websocketpp::close::status::value status = websocketpp::close::status::normal, const QString& reason = QString( "Disconnecting" ) );
void encodeMessage( const QByteArray& bytes );
@@ -70,6 +71,7 @@ private:
bool m_disconnecting;
QUrl m_url;
QString m_authorizationHeader;
std::stringstream m_outputStream;
std::unique_ptr< hatchet_client > m_client;
hatchet_client::connection_ptr m_connection;

View File

@@ -49,11 +49,22 @@ WebSocketThreadController::setUrl( const QString &url )
}
void
WebSocketThreadController::setAuthorizationHeader( const QString &authorizationHeader )
{
m_authorizationHeader = authorizationHeader;
if ( m_webSocket )
{
QMetaObject::invokeMethod( m_webSocket, "setAuthorizationHeader", Qt::QueuedConnection, Q_ARG( QString, authorizationHeader ));
}
}
void
WebSocketThreadController::run()
{
tLog() << Q_FUNC_INFO << "Starting";
m_webSocket = QPointer< WebSocket >( new WebSocket( m_url ) );
m_webSocket = QPointer< WebSocket >( new WebSocket( m_url, m_authorizationHeader ) );
if ( m_webSocket && m_sip )
{
tLog() << Q_FUNC_INFO << "Have a valid websocket and parent";

View File

@@ -32,6 +32,7 @@ public:
virtual ~WebSocketThreadController();
void setUrl( const QString &url );
void setAuthorizationHeader( const QString &authorizationHeader );
protected:
void run();
@@ -42,6 +43,7 @@ private:
QPointer< WebSocket > m_webSocket;
QPointer< QObject > m_sip;
QString m_url;
QString m_authorizationHeader;
};
#endif