mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-05 13:47:26 +02:00
Add parameter to specify additional headers to a streamURL
* Fixes TWK-1623
This commit is contained in:
@@ -43,6 +43,7 @@
|
||||
#include <QFileInfo>
|
||||
#include <QtCrypto>
|
||||
#include <QWebFrame>
|
||||
#include <QMap>
|
||||
|
||||
using namespace Tomahawk;
|
||||
|
||||
@@ -463,6 +464,13 @@ JSResolverHelper::addCustomUrlHandler( const QString& protocol,
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
JSResolverHelper::reportStreamUrl( const QString& qid, const QString& streamUrl )
|
||||
{
|
||||
reportStreamUrl( qid, streamUrl, QVariantMap() );
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
JSResolverHelper::addCustomUrlTranslator( const QString& protocol,
|
||||
const QString& callbackFuncName,
|
||||
@@ -529,7 +537,7 @@ JSResolverHelper::customIODeviceFactory( const Tomahawk::result_ptr&, const QStr
|
||||
|
||||
QString urlStr = m_resolver->d_func()->engine->mainFrame()->evaluateJavaScript( getUrl ).toString();
|
||||
|
||||
returnStreamUrl( urlStr, callback );
|
||||
returnStreamUrl( urlStr, QMap<QString, QString>(), callback );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -564,19 +572,28 @@ JSResolverHelper::customUrlTranslator( const Tomahawk::result_ptr&, const QStrin
|
||||
|
||||
void
|
||||
JSResolverHelper::reportStreamUrl( const QString& qid,
|
||||
const QString& streamUrl )
|
||||
const QString& streamUrl, const QVariantMap& headers )
|
||||
{
|
||||
if ( !m_streamCallbacks.contains( qid ) )
|
||||
return;
|
||||
|
||||
boost::function< void( QSharedPointer< QIODevice >& ) > callback = m_streamCallbacks.take( qid );
|
||||
|
||||
returnStreamUrl( streamUrl, callback );
|
||||
QMap<QString, QString> parsedHeaders;
|
||||
foreach ( const QString& key, headers.keys()) {
|
||||
Q_ASSERT_X( headers[key].canConvert( QVariant::String ), Q_FUNC_INFO, "Expected a Map of string for additional headers" );
|
||||
if ( headers[key].canConvert( QVariant::String ) ) {
|
||||
parsedHeaders.insert( key, headers[key].toString() );
|
||||
}
|
||||
}
|
||||
|
||||
returnStreamUrl( streamUrl, parsedHeaders, callback );
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
JSResolverHelper::returnStreamUrl( const QString& streamUrl, boost::function< void( QSharedPointer< QIODevice >& ) > callback )
|
||||
JSResolverHelper::returnStreamUrl( const QString& streamUrl, const QMap<QString, QString>& headers,
|
||||
boost::function< void( QSharedPointer< QIODevice >& ) > callback )
|
||||
{
|
||||
QSharedPointer< QIODevice > sp;
|
||||
if ( streamUrl.isEmpty() )
|
||||
@@ -587,6 +604,9 @@ JSResolverHelper::returnStreamUrl( const QString& streamUrl, boost::function< vo
|
||||
|
||||
QUrl url = QUrl::fromEncoded( streamUrl.toUtf8() );
|
||||
QNetworkRequest req( url );
|
||||
foreach ( const QString& key , headers.keys() ) {
|
||||
req.setRawHeader( key.toLatin1(), headers[key].toLatin1() );
|
||||
}
|
||||
tDebug() << "Creating a QNetowrkReply with url:" << req.url().toString();
|
||||
QNetworkReply* reply = Tomahawk::Utils::nam()->get( req );
|
||||
|
||||
|
@@ -46,6 +46,7 @@ public:
|
||||
|
||||
Q_INVOKABLE void addCustomUrlHandler( const QString& protocol, const QString& callbackFuncName, const QString& isAsynchronous = "false" );
|
||||
Q_INVOKABLE void reportStreamUrl( const QString& qid, const QString& streamUrl );
|
||||
Q_INVOKABLE void reportStreamUrl( const QString& qid, const QString& streamUrl, const QVariantMap& headers );
|
||||
Q_INVOKABLE void addCustomUrlTranslator( const QString& protocol, const QString& callbackFuncName, const QString& isAsynchronous = "false" );
|
||||
Q_INVOKABLE void reportUrlTranslation( const QString& qid, const QString& streamUrl );
|
||||
|
||||
@@ -85,7 +86,8 @@ private slots:
|
||||
|
||||
private:
|
||||
Tomahawk::query_ptr parseTrack( const QVariantMap& track );
|
||||
void returnStreamUrl( const QString& streamUrl, boost::function< void( QSharedPointer< QIODevice >& ) > callback );
|
||||
void returnStreamUrl( const QString& streamUrl, const QMap<QString, QString>& headers,
|
||||
boost::function< void( QSharedPointer< QIODevice >& ) > callback );
|
||||
void returnUrlTranslation( const QString& streamUrl, boost::function< void( const QString& ) > callback );
|
||||
|
||||
QString m_scriptPath, m_urlCallback, m_urlTranslator;
|
||||
|
Reference in New Issue
Block a user