mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-15 02:24:50 +02:00
Move initialization of Playdar API to the corresponding lib
This commit is contained in:
@@ -39,11 +39,61 @@
|
|||||||
using namespace Tomahawk;
|
using namespace Tomahawk;
|
||||||
using namespace TomahawkUtils;
|
using namespace TomahawkUtils;
|
||||||
|
|
||||||
|
QPointer< Api_v1 > Api_v1::s_instance = NULL;
|
||||||
|
QPointer< QxtHttpServerConnector > Api_v1::s_connector;
|
||||||
|
QPointer< QxtHttpSessionManager > Api_v1::s_session;
|
||||||
|
|
||||||
|
|
||||||
Api_v1::Api_v1( QxtAbstractWebSessionManager* sm, QObject* parent )
|
Api_v1::Api_v1( QxtAbstractWebSessionManager* sm, QObject* parent )
|
||||||
: QxtWebSlotService(sm, parent)
|
: QxtWebSlotService(sm, parent)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Api_v1*
|
||||||
|
Api_v1::startInstance( QHostAddress interface, qint16 port )
|
||||||
|
{
|
||||||
|
if ( !s_session.isNull() )
|
||||||
|
{
|
||||||
|
tLog() << "HTTPd session already exists, returning";
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
s_session = QPointer< QxtHttpSessionManager >( new QxtHttpSessionManager() );
|
||||||
|
s_connector = QPointer< QxtHttpServerConnector >( new QxtHttpServerConnector );
|
||||||
|
if ( s_session.isNull() || s_connector.isNull() )
|
||||||
|
{
|
||||||
|
if ( !s_session.isNull() )
|
||||||
|
delete s_session.data();
|
||||||
|
if ( !s_connector.isNull() )
|
||||||
|
delete s_connector.data();
|
||||||
|
tLog() << "Failed to start HTTPd, could not create object";
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
s_session->setListenInterface( interface );
|
||||||
|
s_session->setPort( port );
|
||||||
|
s_session->setConnector( s_connector.data() );
|
||||||
|
|
||||||
|
s_instance = new Api_v1( s_session.data() );
|
||||||
|
s_session->setStaticContentService( s_instance );
|
||||||
|
|
||||||
|
tLog() << "Starting HTTPd on" << s_session->listenInterface().toString() << s_session->port();
|
||||||
|
s_session->start();
|
||||||
|
return s_instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
Api_v1::stopInstance()
|
||||||
|
{
|
||||||
|
if ( !s_connector.isNull() )
|
||||||
|
delete s_connector.data();
|
||||||
|
if ( !s_session.isNull() )
|
||||||
|
delete s_session.data();
|
||||||
|
if ( !s_instance.isNull() )
|
||||||
|
delete s_instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Api_v1::auth_1( QxtWebRequestEvent* event, QString arg )
|
Api_v1::auth_1( QxtWebRequestEvent* event, QString arg )
|
||||||
|
@@ -50,9 +50,26 @@ class TOMAHAWK_PLAYDARAPI_EXPORT Api_v1 : public QxtWebSlotService
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Api_v1( QxtAbstractWebSessionManager* sm, QObject* parent = 0 );
|
Api_v1( QxtAbstractWebSessionManager* sm, QObject* parent = 0 );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the current running instance instaniated by the singleton helper
|
||||||
|
* functions.
|
||||||
|
*/
|
||||||
|
static Api_v1* instance();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Start a singleton instance of the playdar API. Though you are not
|
||||||
|
* limited to use one instance of this class, this helper function takes
|
||||||
|
* care of all related Qxt classes that need to be instantiated to run the API.
|
||||||
|
*/
|
||||||
|
static Api_v1* startInstance( QHostAddress interface, qint16 port );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stop the singleton instance and release its resources.
|
||||||
|
*/
|
||||||
|
static void stopInstance();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
// authenticating uses /auth_1
|
// authenticating uses /auth_1
|
||||||
// we redirect to /auth_2 for the callback
|
// we redirect to /auth_2 for the callback
|
||||||
@@ -83,6 +100,12 @@ private:
|
|||||||
|
|
||||||
QxtWebRequestEvent* m_storedEvent;
|
QxtWebRequestEvent* m_storedEvent;
|
||||||
QSharedPointer< QIODevice > m_ioDevice;
|
QSharedPointer< QIODevice > m_ioDevice;
|
||||||
|
|
||||||
|
// Static variables for the singleton instance.
|
||||||
|
static QPointer< Api_v1 > s_instance;
|
||||||
|
static QPointer< QxtHttpServerConnector > s_connector;
|
||||||
|
static QPointer< QxtHttpSessionManager > s_session;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -184,7 +184,6 @@ TARGET_LINK_LIBRARIES( tomahawk_bin
|
|||||||
${QT_LIBRARIES}
|
${QT_LIBRARIES}
|
||||||
${MAC_EXTRA_LIBS}
|
${MAC_EXTRA_LIBS}
|
||||||
${ECHONEST_LIBRARIES}
|
${ECHONEST_LIBRARIES}
|
||||||
${QXTWEB_LIBRARIES}
|
|
||||||
${QJSON_LIBRARIES}
|
${QJSON_LIBRARIES}
|
||||||
${TAGLIB_LIBRARIES}
|
${TAGLIB_LIBRARIES}
|
||||||
)
|
)
|
||||||
|
@@ -285,11 +285,6 @@ TomahawkApp::~TomahawkApp()
|
|||||||
{
|
{
|
||||||
tDebug( LOGVERBOSE ) << "Shutting down Tomahawk...";
|
tDebug( LOGVERBOSE ) << "Shutting down Tomahawk...";
|
||||||
|
|
||||||
if ( !m_httpv1_session.isNull() )
|
|
||||||
delete m_httpv1_session.data();
|
|
||||||
if ( !m_httpv1_connector.isNull() )
|
|
||||||
delete m_httpv1_connector.data();
|
|
||||||
|
|
||||||
if ( Pipeline::instance() )
|
if ( Pipeline::instance() )
|
||||||
Pipeline::instance()->stop();
|
Pipeline::instance()->stop();
|
||||||
|
|
||||||
@@ -482,43 +477,14 @@ TomahawkApp::initDatabase()
|
|||||||
void
|
void
|
||||||
TomahawkApp::initHTTP()
|
TomahawkApp::initHTTP()
|
||||||
{
|
{
|
||||||
if ( !TomahawkSettings::instance()->httpEnabled() )
|
if ( TomahawkSettings::instance()->httpEnabled() )
|
||||||
{
|
{
|
||||||
tLog() << "Stopping HTTPd, not enabled";
|
Api_v1::startInstance( QHostAddress::LocalHost, 60210 ); // TODO: Config
|
||||||
if ( !m_httpv1_session.isNull() )
|
|
||||||
delete m_httpv1_session.data();
|
|
||||||
if ( !m_httpv1_connector.isNull() )
|
|
||||||
delete m_httpv1_connector.data();
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
if ( m_httpv1_session )
|
|
||||||
{
|
{
|
||||||
tLog() << "HTTPd session already exists, returning";
|
Api_v1::stopInstance();
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m_httpv1_session = QPointer< QxtHttpSessionManager >( new QxtHttpSessionManager() );
|
|
||||||
m_httpv1_connector = QPointer< QxtHttpServerConnector >( new QxtHttpServerConnector );
|
|
||||||
if ( m_httpv1_session.isNull() || m_httpv1_connector.isNull() )
|
|
||||||
{
|
|
||||||
if ( !m_httpv1_session.isNull() )
|
|
||||||
delete m_httpv1_session.data();
|
|
||||||
if ( !m_httpv1_connector.isNull() )
|
|
||||||
delete m_httpv1_connector.data();
|
|
||||||
tLog() << "Failed to start HTTPd, could not create object";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_httpv1_session->setPort( 60210 ); //TODO config
|
|
||||||
m_httpv1_session->setListenInterface( QHostAddress::LocalHost );
|
|
||||||
m_httpv1_session->setConnector( m_httpv1_connector.data() );
|
|
||||||
|
|
||||||
Api_v1* api = new Api_v1( m_httpv1_session.data() );
|
|
||||||
m_httpv1_session->setStaticContentService( api );
|
|
||||||
|
|
||||||
tLog() << "Starting HTTPd on" << m_httpv1_session->listenInterface().toString() << m_httpv1_session->port();
|
|
||||||
m_httpv1_session->start();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -31,9 +31,6 @@
|
|||||||
#include "HeadlessCheck.h"
|
#include "HeadlessCheck.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include <QxtWeb/QxtHttpServerConnector>
|
|
||||||
#include <QxtWeb/HttpSessionManager>
|
|
||||||
|
|
||||||
#include <QRegExp>
|
#include <QRegExp>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
@@ -147,9 +144,6 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool m_headless;
|
bool m_headless;
|
||||||
|
|
||||||
QPointer< QxtHttpServerConnector > m_httpv1_connector;
|
|
||||||
QPointer< QxtHttpSessionManager > m_httpv1_session;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Q_DECLARE_METATYPE( PairList )
|
Q_DECLARE_METATYPE( PairList )
|
||||||
|
Reference in New Issue
Block a user