mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-22 21:54:00 +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;
|
||||
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
|
||||
{
|
||||
|
@@ -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;
|
||||
|
@@ -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:
|
||||
|
@@ -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,13 +47,17 @@ WebSocket::WebSocket( const QString& url )
|
||||
WebSocket::~WebSocket()
|
||||
{
|
||||
if ( m_connection )
|
||||
{
|
||||
m_connection.reset();
|
||||
}
|
||||
|
||||
m_client.reset();
|
||||
|
||||
if ( m_socket )
|
||||
{
|
||||
delete m_socket.data();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
@@ -60,12 +65,33 @@ 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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
@@ -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 );
|
||||
}
|
||||
|
@@ -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;
|
||||
|
@@ -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";
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user