mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-22 13:43:11 +02:00
Remove some old cruft and start getting things ready for Kiva
This commit is contained in:
@@ -183,8 +183,6 @@ HatchetAccount::sipPlugin( bool create )
|
|||||||
|
|
||||||
tLog() << Q_FUNC_INFO;
|
tLog() << Q_FUNC_INFO;
|
||||||
m_tomahawkSipPlugin = QPointer< HatchetSipPlugin >( new HatchetSipPlugin( this ) );
|
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();
|
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
|
QVariantMap
|
||||||
HatchetAccount::parseReply( QNetworkReply* reply, bool& okRet ) const
|
HatchetAccount::parseReply( QNetworkReply* reply, bool& okRet ) const
|
||||||
{
|
{
|
||||||
|
@@ -89,8 +89,6 @@ public:
|
|||||||
|
|
||||||
void fetchAccessToken( const QString& type = "dreamcatcher" );
|
void fetchAccessToken( const QString& type = "dreamcatcher" );
|
||||||
|
|
||||||
QString authUrlForService( const Service& service ) const;
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void authError( QString error, int statusCode, const QVariantMap );
|
void authError( QString error, int statusCode, const QVariantMap );
|
||||||
void deauthenticated();
|
void deauthenticated();
|
||||||
@@ -99,7 +97,6 @@ signals:
|
|||||||
private slots:
|
private slots:
|
||||||
void onPasswordLoginFinished( QNetworkReply*, const QString& username );
|
void onPasswordLoginFinished( QNetworkReply*, const QString& username );
|
||||||
void onFetchAccessTokenFinished( QNetworkReply*, const QString& type );
|
void onFetchAccessTokenFinished( QNetworkReply*, const QString& type );
|
||||||
void authUrlDiscovered( Tomahawk::Accounts::HatchetAccount::Service service, const QString& authUrl );
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QByteArray refreshToken() const;
|
QByteArray refreshToken() const;
|
||||||
@@ -119,7 +116,6 @@ private:
|
|||||||
Account::ConnectionState m_state;
|
Account::ConnectionState m_state;
|
||||||
|
|
||||||
QPointer< HatchetSipPlugin > m_tomahawkSipPlugin;
|
QPointer< HatchetSipPlugin > m_tomahawkSipPlugin;
|
||||||
QHash< Service, QString > m_extraAuthUrls;
|
|
||||||
|
|
||||||
static HatchetAccount* s_instance;
|
static HatchetAccount* s_instance;
|
||||||
friend class HatchetAccountConfig;
|
friend class HatchetAccountConfig;
|
||||||
|
@@ -65,7 +65,6 @@ public slots:
|
|||||||
signals:
|
signals:
|
||||||
void connectWebSocket() const;
|
void connectWebSocket() const;
|
||||||
void disconnectWebSocket() const;
|
void disconnectWebSocket() const;
|
||||||
void authUrlDiscovered( Tomahawk::Accounts::HatchetAccount::Service service, const QString& authUrl ) const;
|
|
||||||
void rawBytes( QByteArray bytes ) const;
|
void rawBytes( QByteArray bytes ) const;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
@@ -23,10 +23,11 @@
|
|||||||
|
|
||||||
typedef typename websocketpp::lib::error_code error_code;
|
typedef typename websocketpp::lib::error_code error_code;
|
||||||
|
|
||||||
WebSocket::WebSocket( const QString& url )
|
WebSocket::WebSocket( const QString& url, const QString& authorizationHeader )
|
||||||
: QObject( nullptr )
|
: QObject( nullptr )
|
||||||
, m_disconnecting( false )
|
, m_disconnecting( false )
|
||||||
, m_url( url )
|
, m_url( url )
|
||||||
|
, m_authorizationHeader( authorizationHeader )
|
||||||
, m_outputStream()
|
, m_outputStream()
|
||||||
, m_lastSocketState( QAbstractSocket::UnconnectedState )
|
, m_lastSocketState( QAbstractSocket::UnconnectedState )
|
||||||
, m_connectionTimer( this )
|
, m_connectionTimer( this )
|
||||||
@@ -46,12 +47,16 @@ WebSocket::WebSocket( const QString& url )
|
|||||||
WebSocket::~WebSocket()
|
WebSocket::~WebSocket()
|
||||||
{
|
{
|
||||||
if ( m_connection )
|
if ( m_connection )
|
||||||
|
{
|
||||||
m_connection.reset();
|
m_connection.reset();
|
||||||
|
}
|
||||||
|
|
||||||
m_client.reset();
|
m_client.reset();
|
||||||
|
|
||||||
if ( m_socket )
|
if ( m_socket )
|
||||||
|
{
|
||||||
delete m_socket.data();
|
delete m_socket.data();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -60,11 +65,32 @@ WebSocket::setUrl( const QString &url )
|
|||||||
{
|
{
|
||||||
tLog() << Q_FUNC_INFO << "Setting url to" << url;
|
tLog() << Q_FUNC_INFO << "Setting url to" << url;
|
||||||
if ( m_url == url )
|
if ( m_url == url )
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// We'll let automatic reconnection handle things
|
// We'll let automatic reconnection handle things
|
||||||
if ( m_socket && m_socket->isEncrypted() )
|
if ( m_socket && m_socket->isEncrypted() )
|
||||||
|
{
|
||||||
disconnectWs();
|
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 )
|
||||||
{
|
{
|
||||||
if ( m_socket->isEncrypted() )
|
if ( m_socket->isEncrypted() )
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if ( m_socket->state() == QAbstractSocket::ClosingState )
|
if ( m_socket->state() == QAbstractSocket::ClosingState )
|
||||||
|
{
|
||||||
QMetaObject::invokeMethod( this, "connectWs", Qt::QueuedConnection );
|
QMetaObject::invokeMethod( this, "connectWs", Qt::QueuedConnection );
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -119,9 +149,13 @@ void
|
|||||||
WebSocket::disconnectSocket()
|
WebSocket::disconnectSocket()
|
||||||
{
|
{
|
||||||
if ( m_socket && m_socket->state() == QAbstractSocket::ConnectedState )
|
if ( m_socket && m_socket->state() == QAbstractSocket::ConnectedState )
|
||||||
|
{
|
||||||
m_socket->disconnectFromHost();
|
m_socket->disconnectFromHost();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
QMetaObject::invokeMethod( this, "cleanup", Qt::QueuedConnection );
|
QMetaObject::invokeMethod( this, "cleanup", Qt::QueuedConnection );
|
||||||
|
}
|
||||||
|
|
||||||
QTimer::singleShot( 5000, this, SLOT( cleanup() ) ); //safety
|
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";
|
tLog() << Q_FUNC_INFO << "Encountered errors when trying to connect via SSL";
|
||||||
foreach( QSslError error, errors )
|
foreach( QSslError error, errors )
|
||||||
|
{
|
||||||
tLog() << Q_FUNC_INFO << "Error: " << error.errorString();
|
tLog() << Q_FUNC_INFO << "Error: " << error.errorString();
|
||||||
|
}
|
||||||
QMetaObject::invokeMethod( this, "disconnectWs", Qt::QueuedConnection );
|
QMetaObject::invokeMethod( this, "disconnectWs", Qt::QueuedConnection );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -199,6 +235,10 @@ WebSocket::encrypted()
|
|||||||
disconnectWs();
|
disconnectWs();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if ( !m_authorizationHeader.isEmpty() )
|
||||||
|
{
|
||||||
|
m_connection->replace_header( "Authorization", m_authorizationHeader.toStdString() );
|
||||||
|
}
|
||||||
m_client->connect( m_connection );
|
m_client->connect( m_connection );
|
||||||
QMetaObject::invokeMethod( this, "readOutput", Qt::QueuedConnection );
|
QMetaObject::invokeMethod( this, "readOutput", Qt::QueuedConnection );
|
||||||
emit connected();
|
emit connected();
|
||||||
@@ -241,17 +281,23 @@ WebSocket::readOutput()
|
|||||||
m_connectionTimer.stop();
|
m_connectionTimer.stop();
|
||||||
}
|
}
|
||||||
else if ( !m_disconnecting )
|
else if ( !m_disconnecting )
|
||||||
|
{
|
||||||
QTimer::singleShot( 200, this, SLOT( readOutput() ) );
|
QTimer::singleShot( 200, this, SLOT( readOutput() ) );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
m_connectionTimer.stop();
|
m_connectionTimer.stop();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
WebSocket::socketReadyRead()
|
WebSocket::socketReadyRead()
|
||||||
{
|
{
|
||||||
if ( !m_socket || !m_socket->isEncrypted() )
|
if ( !m_socket || !m_socket->isEncrypted() )
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if ( !m_socket->isValid() )
|
if ( !m_socket->isValid() )
|
||||||
{
|
{
|
||||||
@@ -296,7 +342,9 @@ WebSocket::encodeMessage( const QByteArray &bytes )
|
|||||||
m_connectionTimer.start();
|
m_connectionTimer.start();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
m_connection->send( std::string( bytes.constData() ), websocketpp::frame::opcode::TEXT );
|
m_connection->send( std::string( bytes.constData() ), websocketpp::frame::opcode::TEXT );
|
||||||
|
}
|
||||||
|
|
||||||
QMetaObject::invokeMethod( this, "readOutput", Qt::QueuedConnection );
|
QMetaObject::invokeMethod( this, "readOutput", Qt::QueuedConnection );
|
||||||
}
|
}
|
||||||
|
@@ -39,7 +39,7 @@ class WebSocket : public QObject
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit WebSocket( const QString& url );
|
explicit WebSocket( const QString& url, const QString& authorizationHeader = QString() );
|
||||||
virtual ~WebSocket();
|
virtual ~WebSocket();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
@@ -49,6 +49,7 @@ signals:
|
|||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void setUrl( const QString& url );
|
void setUrl( const QString& url );
|
||||||
|
void setAuthorizationHeader( const QString& authorizationHeader );
|
||||||
void connectWs();
|
void connectWs();
|
||||||
void disconnectWs( websocketpp::close::status::value status = websocketpp::close::status::normal, const QString& reason = QString( "Disconnecting" ) );
|
void disconnectWs( websocketpp::close::status::value status = websocketpp::close::status::normal, const QString& reason = QString( "Disconnecting" ) );
|
||||||
void encodeMessage( const QByteArray& bytes );
|
void encodeMessage( const QByteArray& bytes );
|
||||||
@@ -70,6 +71,7 @@ private:
|
|||||||
|
|
||||||
bool m_disconnecting;
|
bool m_disconnecting;
|
||||||
QUrl m_url;
|
QUrl m_url;
|
||||||
|
QString m_authorizationHeader;
|
||||||
std::stringstream m_outputStream;
|
std::stringstream m_outputStream;
|
||||||
std::unique_ptr< hatchet_client > m_client;
|
std::unique_ptr< hatchet_client > m_client;
|
||||||
hatchet_client::connection_ptr m_connection;
|
hatchet_client::connection_ptr m_connection;
|
||||||
|
@@ -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
|
void
|
||||||
WebSocketThreadController::run()
|
WebSocketThreadController::run()
|
||||||
{
|
{
|
||||||
tLog() << Q_FUNC_INFO << "Starting";
|
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 )
|
if ( m_webSocket && m_sip )
|
||||||
{
|
{
|
||||||
tLog() << Q_FUNC_INFO << "Have a valid websocket and parent";
|
tLog() << Q_FUNC_INFO << "Have a valid websocket and parent";
|
||||||
|
@@ -32,6 +32,7 @@ public:
|
|||||||
virtual ~WebSocketThreadController();
|
virtual ~WebSocketThreadController();
|
||||||
|
|
||||||
void setUrl( const QString &url );
|
void setUrl( const QString &url );
|
||||||
|
void setAuthorizationHeader( const QString &authorizationHeader );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void run();
|
void run();
|
||||||
@@ -42,6 +43,7 @@ private:
|
|||||||
QPointer< WebSocket > m_webSocket;
|
QPointer< WebSocket > m_webSocket;
|
||||||
QPointer< QObject > m_sip;
|
QPointer< QObject > m_sip;
|
||||||
QString m_url;
|
QString m_url;
|
||||||
|
QString m_authorizationHeader;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user