1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-31 01:30:02 +02:00

Move nam() out of TomahawkUtils.h

This commit is contained in:
Dominik Schmidt
2013-07-15 17:54:25 +02:00
parent a849636571
commit 05b6d7507b
39 changed files with 511 additions and 335 deletions

View File

@@ -24,6 +24,7 @@
#include "utils/Logger.h"
#include "sip/HatchetSip.h"
#include "utils/TomahawkUtils.h"
#include "utils/NetworkAccessManager.cpp"
#include <QtPlugin>
#include <QFile>
@@ -243,7 +244,7 @@ HatchetAccount::loginWithPassword( const QString& username, const QString& passw
QNetworkRequest req( QUrl( c_loginServer + "/auth/credentials") );
req.setHeader( QNetworkRequest::ContentTypeHeader, "application/json; charset=utf-8" );
QNetworkReply* reply = TomahawkUtils::nam()->post( req, msgJson );
QNetworkReply* reply = Tomahawk::Utils::nam()->post( req, msgJson );
NewClosure( reply, SIGNAL( finished() ), this, SLOT( onPasswordLoginFinished( QNetworkReply*, const QString& ) ), reply, username );
}
@@ -264,7 +265,7 @@ HatchetAccount::fetchAccessTokens( const QString& type )
tLog() << "Fetching access tokens";
QNetworkRequest req( QUrl( c_accessTokenServer + "/tokens/" + type + "?authtoken=" + authToken() ) );
QNetworkReply* reply = TomahawkUtils::nam()->get( req );
QNetworkReply* reply = Tomahawk::Utils::nam()->get( req );
connect( reply, SIGNAL( finished() ), this, SLOT( onFetchAccessTokensFinished() ) );
}

View File

@@ -32,6 +32,7 @@
#include "TomahawkSettings.h"
#include "utils/TomahawkUtilsGui.h"
#include "sip/PeerInfo.h"
#include "utils/NetworkProxyFactory.h"
#include "config.h"
#include "TomahawkVersion.h"
@@ -604,7 +605,7 @@ XmppSipPlugin::configurationChanged()
void
XmppSipPlugin::setupClientHelper()
{
m_client->setProxyFactory( TomahawkUtils::proxyFactory( true ) );
m_client->setProxyFactory( Tomahawk::Utils::proxyFactory( true ) );
Jreen::JID jid = Jreen::JID( m_currentUsername );
m_client->setJID( jid );
m_client->setPassword( m_currentPassword );

View File

@@ -29,6 +29,7 @@
#include "utils/TomahawkUtils.h"
#include "utils/Logger.h"
#include "utils/TomahawkCache.h"
#include "utils/NetworkAccessManager.h"
#include "Source.h"
#include <qjson/parser.h>
@@ -280,7 +281,7 @@ ChartsPlugin::fetchChartSourcesList( bool fetchOnlySourceList )
TomahawkUtils::urlAddQueryItem( url, "version", TomahawkUtils::appFriendlyVersion() );
QNetworkReply* reply = TomahawkUtils::nam()->get( QNetworkRequest( url ) );
QNetworkReply* reply = Tomahawk::Utils::nam()->get( QNetworkRequest( url ) );
reply->setProperty( "only_source_list", fetchOnlySourceList );
connect( reply, SIGNAL( finished() ), SLOT( chartSourcesList() ) );
@@ -376,7 +377,7 @@ ChartsPlugin::fetchSource(const QString& source)
QUrl url = QUrl( QString( CHART_URL "charts/%1" ).arg( source ) );
TomahawkUtils::urlAddQueryItem( url, "version", TomahawkUtils::appFriendlyVersion() );
QNetworkReply* reply = TomahawkUtils::nam()->get( QNetworkRequest( url ) );
QNetworkReply* reply = Tomahawk::Utils::nam()->get( QNetworkRequest( url ) );
reply->setProperty( "chart_source", source );
tDebug() << Q_FUNC_INFO << "fetching:" << url;
@@ -422,7 +423,7 @@ ChartsPlugin::fetchChart( Tomahawk::InfoSystem::InfoRequestData requestData, con
tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "fetching: " << url;
QNetworkReply* reply = TomahawkUtils::nam()->get( QNetworkRequest( url ) );
QNetworkReply* reply = Tomahawk::Utils::nam()->get( QNetworkRequest( url ) );
reply->setProperty( "requestData", QVariant::fromValue< Tomahawk::InfoSystem::InfoRequestData >( requestData ) );
connect( reply, SIGNAL( finished() ), SLOT( chartReturned() ) );

View File

@@ -22,6 +22,7 @@
#include "utils/TomahawkUtils.h"
#include "utils/Logger.h"
#include "utils/Closure.h"
#include "utils/NetworkAccessManager.h"
#include <qjson/parser.h>
@@ -97,7 +98,7 @@ DiscogsPlugin::notInCacheSlot( InfoStringHash criteria, InfoRequestData requestD
QNetworkRequest req( url );
req.setRawHeader( "User-Agent", "TomahawkPlayer/1.0 +http://tomahawk-player.org" );
QNetworkReply* reply = TomahawkUtils::nam()->get( req );
QNetworkReply* reply = Tomahawk::Utils::nam()->get( req );
NewClosure( reply, SIGNAL( finished() ), this, SLOT( albumSearchSlot( Tomahawk::InfoSystem::InfoRequestData, QNetworkReply* ) ), requestData, reply );
break;
@@ -136,7 +137,7 @@ DiscogsPlugin::albumSearchSlot( const InfoRequestData &requestData, QNetworkRepl
QNetworkRequest req( url );
req.setRawHeader( "User-Agent", "TomahawkPlayer/1.0 +http://tomahawk-player.org" );
QNetworkReply* reply2 = TomahawkUtils::nam()->get( req );
QNetworkReply* reply2 = Tomahawk::Utils::nam()->get( req );
NewClosure( reply2, SIGNAL( finished() ), this, SLOT( albumInfoSlot( Tomahawk::InfoSystem::InfoRequestData, QNetworkReply* ) ), requestData, reply2 );
}

View File

@@ -18,10 +18,12 @@
*/
#include "EchonestPlugin.h"
#include <echonest/ArtistTypes.h>
#include "utils/TomahawkUtils.h"
#include "utils/Logger.h"
#include "utils/NetworkAccessManager.h"
#include <echonest/ArtistTypes.h>
#include <QNetworkConfiguration>
@@ -50,7 +52,7 @@ EchonestPlugin::~EchonestPlugin()
void
EchonestPlugin::init()
{
Echonest::Config::instance()->setNetworkAccessManager( TomahawkUtils::nam() );
Echonest::Config::instance()->setNetworkAccessManager( Tomahawk::Utils::nam() );
}

View File

@@ -31,6 +31,7 @@
#include "utils/TomahawkUtils.h"
#include "infosystem/InfoSystemWorker.h"
#include "utils/Logger.h"
#include "utils/NetworkAccessManager.h"
#include "Source.h"
#define HYPEM_URL "http://hypem.com/playlist/"
@@ -204,7 +205,7 @@ HypemPlugin::notInCacheSlot( QHash<QString, QString> criteria, Tomahawk::InfoSys
QUrl url = QUrl( QString( HYPEM_URL "%1/%2" ).arg( criteria["chart_id"].toLower() ).arg(HYPEM_END_URL) );
qDebug() << Q_FUNC_INFO << "Getting chart url" << url;
QNetworkReply* reply = TomahawkUtils::nam()->get( QNetworkRequest( url ) );
QNetworkReply* reply = Tomahawk::Utils::nam()->get( QNetworkRequest( url ) );
reply->setProperty( "requestData", QVariant::fromValue< Tomahawk::InfoSystem::InfoRequestData >( requestData ) );
connect( reply, SIGNAL( finished() ), SLOT( chartReturned() ) );
return;

View File

@@ -21,6 +21,7 @@
#include "utils/TomahawkUtils.h"
#include "utils/Logger.h"
#include "utils/NetworkAccessManager.h"
#include <QNetworkReply>
#include <QDomDocument>
@@ -110,7 +111,7 @@ MusicBrainzPlugin::notInCacheSlot( InfoStringHash criteria, InfoRequestData requ
TomahawkUtils::urlAddQueryItem( url, "limit", "100" );
tDebug() << Q_FUNC_INFO << url.toString();
QNetworkReply* reply = TomahawkUtils::nam()->get( QNetworkRequest( url ) );
QNetworkReply* reply = Tomahawk::Utils::nam()->get( QNetworkRequest( url ) );
reply->setProperty( "requestData", QVariant::fromValue< Tomahawk::InfoSystem::InfoRequestData >( requestData ) );
connect( reply, SIGNAL( finished() ), SLOT( gotReleaseGroupsSlot() ) );
@@ -130,7 +131,7 @@ MusicBrainzPlugin::notInCacheSlot( InfoStringHash criteria, InfoRequestData requ
TomahawkUtils::urlAddQueryItem( url, "limit", "100" );
tDebug() << Q_FUNC_INFO << url.toString();
QNetworkReply* reply = TomahawkUtils::nam()->get( QNetworkRequest( url ) );
QNetworkReply* reply = Tomahawk::Utils::nam()->get( QNetworkRequest( url ) );
reply->setProperty( "requestData", QVariant::fromValue< Tomahawk::InfoSystem::InfoRequestData >( requestData ) );
connect( reply, SIGNAL( finished() ), SLOT( gotReleasesSlot() ) );
@@ -236,7 +237,7 @@ MusicBrainzPlugin::gotReleasesSlot()
TomahawkUtils::urlAddQueryItem( url, "inc", "recordings" );
tDebug() << Q_FUNC_INFO << url.toString();
QNetworkReply* newReply = TomahawkUtils::nam()->get( QNetworkRequest( url ) );
QNetworkReply* newReply = Tomahawk::Utils::nam()->get( QNetworkRequest( url ) );
newReply->setProperty( "requestData", oldReply->property( "requestData" ) );
connect( newReply, SIGNAL( finished() ), SLOT( gotRecordingsSlot() ) );

View File

@@ -21,6 +21,7 @@
#include "utils/TomahawkUtils.h"
#include "utils/Logger.h"
#include "utils/NetworkAccessManager.h"
#include <QNetworkReply>
#include <QDomDocument>
@@ -68,7 +69,7 @@ MusixMatchPlugin::getInfo( Tomahawk::InfoSystem::InfoRequestData requestData )
TomahawkUtils::urlAddQueryItem( url, "q_artist", artist );
TomahawkUtils::urlAddQueryItem( url, "q_track", track );
QNetworkReply* reply = TomahawkUtils::nam()->get( QNetworkRequest( url ) );
QNetworkReply* reply = Tomahawk::Utils::nam()->get( QNetworkRequest( url ) );
reply->setProperty( "requestData", QVariant::fromValue< Tomahawk::InfoSystem::InfoRequestData >( requestData ) );
connect( reply, SIGNAL( finished() ), SLOT( trackSearchSlot() ) );
@@ -128,7 +129,7 @@ MusixMatchPlugin::trackSearchSlot()
TomahawkUtils::urlAddQueryItem( url, "apikey", m_apiKey );
TomahawkUtils::urlAddQueryItem( url, "track_id", track_id );
QNetworkReply* newReply = TomahawkUtils::nam()->get( QNetworkRequest( url ) );
QNetworkReply* newReply = Tomahawk::Utils::nam()->get( QNetworkRequest( url ) );
newReply->setProperty( "requestData", oldReply->property( "requestData" ) );
connect( newReply, SIGNAL( finished() ), SLOT( trackLyricsSlot() ) );
}

View File

@@ -30,6 +30,7 @@
#include "utils/Logger.h"
#include "utils/TomahawkCache.h"
#include "Source.h"
#include "utils/NetworkAccessManager.h"
#include <qjson/parser.h>
#include <qjson/serializer.h>
@@ -268,7 +269,7 @@ NewReleasesPlugin::notInCacheSlot( InfoStringHash criteria, InfoRequestData requ
TomahawkUtils::urlAddQueryItem( url, "version", TomahawkUtils::appFriendlyVersion() );
QNetworkReply* reply = TomahawkUtils::nam()->get( QNetworkRequest ( url ) );
QNetworkReply* reply = Tomahawk::Utils::nam()->get( QNetworkRequest ( url ) );
reply->setProperty( "only_source_list", true );
tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "fetching:" << url;
@@ -401,7 +402,7 @@ NewReleasesPlugin::fetchAllNRSources()
TomahawkUtils::urlAddQueryItem( url, "version", TomahawkUtils::appFriendlyVersion() );
QNetworkReply* reply = TomahawkUtils::nam()->get( QNetworkRequest( url ) );
QNetworkReply* reply = Tomahawk::Utils::nam()->get( QNetworkRequest( url ) );
reply->setProperty( "nr_source", source[ "nr_source" ] );
tDebug() << Q_FUNC_INFO << "fetching:" << url;
@@ -423,7 +424,7 @@ NewReleasesPlugin::fetchNR( InfoRequestData requestData, const QString& source,
tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "fetching: " << url;
QNetworkReply* reply = TomahawkUtils::nam()->get( QNetworkRequest( url ) );
QNetworkReply* reply = Tomahawk::Utils::nam()->get( QNetworkRequest( url ) );
reply->setProperty( "requestData", QVariant::fromValue< Tomahawk::InfoSystem::InfoRequestData >( requestData ) );
connect ( reply, SIGNAL( finished() ), SLOT( nrReturned() ) );

View File

@@ -20,6 +20,7 @@
#include "RoviPlugin.h"
#include "utils/Logger.h"
#include "utils/NetworkAccessManager.h"
#include <qjson/parser.h>
@@ -183,7 +184,7 @@ RoviPlugin::makeRequest( QUrl url )
TomahawkUtils::urlAddQueryItem( url, "sig", generateSig() );
qDebug() << "Rovi request url:" << url.toString();
return TomahawkUtils::nam()->get( QNetworkRequest( url ) );
return Tomahawk::Utils::nam()->get( QNetworkRequest( url ) );
}

View File

@@ -31,6 +31,7 @@
#include "TomahawkSettings.h"
#include "utils/TomahawkUtils.h"
#include "utils/Logger.h"
#include "utils/NetworkAccessManager.h"
#include "CountryUtils.h"
#include "Source.h"
@@ -147,7 +148,7 @@ SpotifyPlugin::notInCacheSlot( Tomahawk::InfoSystem::InfoStringHash criteria, To
QUrl url = QUrl( QString( SPOTIFY_API_URL "toplist/%1/" ).arg( criteria["chart_id"] ) );
qDebug() << Q_FUNC_INFO << "Getting chart url" << url;
QNetworkReply* reply = TomahawkUtils::nam()->get( QNetworkRequest( url ) );
QNetworkReply* reply = Tomahawk::Utils::nam()->get( QNetworkRequest( url ) );
reply->setProperty( "requestData", QVariant::fromValue< Tomahawk::InfoSystem::InfoRequestData >( requestData ) );
connect( reply, SIGNAL( finished() ), SLOT( chartReturned() ) );
return;
@@ -164,7 +165,7 @@ SpotifyPlugin::notInCacheSlot( Tomahawk::InfoSystem::InfoStringHash criteria, To
tDebug() << "SpotifyPlugin: InfoChart fetching possible resources";
QUrl url = QUrl( QString( SPOTIFY_API_URL "toplist/charts" ) );
QNetworkReply* reply = TomahawkUtils::nam()->get( QNetworkRequest( url ) );
QNetworkReply* reply = Tomahawk::Utils::nam()->get( QNetworkRequest( url ) );
tDebug() << Q_FUNC_INFO << "fetching:" << url;
connect( reply, SIGNAL( finished() ), SLOT( chartTypes() ) );
m_chartsFetchJobs++;

View File

@@ -29,6 +29,7 @@
#include "accounts/AccountManager.h"
#include "utils/BinaryInstallerHelper.h"
#include "utils/Closure.h"
#include "utils/NetworkAccessManager.h"
#include <attica/downloaditem.h>
@@ -68,7 +69,7 @@ AtticaManager::AtticaManager( QObject* parent )
// m_manager.addProviderFile( QUrl( "http://bakery.tomahawk-player.org/resolvers/providers.xml" ) );
const QString url = QString( "%1/resolvers/providers.xml?version=%2" ).arg( hostname() ).arg( TomahawkUtils::appFriendlyVersion() );
QNetworkReply* reply = TomahawkUtils::nam()->get( QNetworkRequest( QUrl( url ) ) );
QNetworkReply* reply = Tomahawk::Utils::nam()->get( QNetworkRequest( QUrl( url ) ) );
NewClosure( reply, SIGNAL( finished() ), this, SLOT( providerFetched( QNetworkReply* ) ), reply );
connect( reply, SIGNAL( error( QNetworkReply::NetworkError ) ), this, SLOT( providerError( QNetworkReply::NetworkError ) ) );
@@ -103,7 +104,7 @@ AtticaManager::fetchMissingIcons()
if ( !m_resolverStates.value( resolver.id() ).pixmap && !resolver.icons().isEmpty() && !resolver.icons().first().url().isEmpty() )
{
QNetworkReply* fetch = TomahawkUtils::nam()->get( QNetworkRequest( resolver.icons().first().url() ) );
QNetworkReply* fetch = Tomahawk::Utils::nam()->get( QNetworkRequest( resolver.icons().first().url() ) );
fetch->setProperty( "resolverId", resolver.id() );
connect( fetch, SIGNAL( finished() ), this, SLOT( resolverIconFetched() ) );
@@ -550,7 +551,7 @@ void AtticaManager::doInstallResolver( const Content& resolver, bool autoCreate,
QUrl url( QString( "%1/resolvers/v1/content/download/%2/1" ).arg( hostname() ).arg( resolver.id() ) );
TomahawkUtils::urlAddQueryItem( url, "tomahawkversion", TomahawkUtils::appFriendlyVersion() );
QNetworkReply* r = TomahawkUtils::nam()->get( QNetworkRequest( url ) );
QNetworkReply* r = Tomahawk::Utils::nam()->get( QNetworkRequest( url ) );
NewClosure( r, SIGNAL( finished() ), this, SLOT( resolverDownloadFinished( QNetworkReply* ) ), r );
r->setProperty( "resolverId", resolver.id() );
r->setProperty( "createAccount", autoCreate );
@@ -611,7 +612,7 @@ AtticaManager::resolverDownloadFinished ( QNetworkReply *j )
tLog() << "Found overridden signature in binary download:" << sig;
signature = sig;
}
QNetworkReply* reply = TomahawkUtils::nam()->get( QNetworkRequest( url ) );
QNetworkReply* reply = Tomahawk::Utils::nam()->get( QNetworkRequest( url ) );
connect( reply, SIGNAL( finished() ), this, SLOT( payloadFetched() ) );
reply->setProperty( "resolverId", j->property( "resolverId" ) );
reply->setProperty( "createAccount", j->property( "createAccount" ) );

View File

@@ -124,6 +124,8 @@ set( libGuiSources
utils/SharedTimeLine.cpp
utils/ResultUrlChecker.cpp
utils/NetworkReply.cpp
utils/NetworkProxyFactory.cpp
utils/NetworkAccessManager.cpp
widgets/AnimatedCounterLabel.cpp
widgets/BasicHeader.cpp

View File

@@ -38,6 +38,7 @@
#include "utils/TomahawkUtils.h"
#include "utils/XspfLoader.h"
#include "utils/XspfGenerator.h"
#include "utils/NetworkAccessManager.h"
#include "widgets/SearchWidget.h"
#include "Album.h"
@@ -157,7 +158,7 @@ GlobalActionManager::shortenLink( const QUrl& url, const QVariant& callbackObj )
request.setUrl( url );
qDebug() << "Doing lookup:" << url.toEncoded();
QNetworkReply *reply = TomahawkUtils::nam()->get( request );
QNetworkReply *reply = Tomahawk::Utils::nam()->get( request );
if ( callbackObj.isValid() )
reply->setProperty( "callbackobj", callbackObj );
connect( reply, SIGNAL( finished() ), SLOT( shortenLinkRequestFinished() ) );
@@ -245,7 +246,7 @@ GlobalActionManager::getShortLink( const playlist_ptr& pl )
const QUrl url( QString( "%1/p/").arg( hostname() ) );
QNetworkRequest req( url );
req.setHeader( QNetworkRequest::ContentTypeHeader, QString( "multipart/form-data; boundary=%1" ).arg( QString::fromLatin1( boundary ) ) );
QNetworkReply *reply = TomahawkUtils::nam()->post( req, data );
QNetworkReply *reply = Tomahawk::Utils::nam()->post( req, data );
connect( reply, SIGNAL( finished() ), SLOT( postShortenFinished() ) );
connect( reply, SIGNAL( error( QNetworkReply::NetworkError ) ), SLOT( shortenLinkRequestError( QNetworkReply::NetworkError ) ) );

View File

@@ -19,8 +19,6 @@
#include "LastFmConfig.h"
#include "ui_LastFmConfig.h"
#include <boost/bind.hpp>
#include "LastFmAccount.h"
#include "database/Database.h"
#include "database/DatabaseCommand_LogPlayback.h"
@@ -29,12 +27,15 @@
#include "utils/TomahawkUtils.h"
#include "utils/Logger.h"
#include "utils/Closure.h"
#include "utils/NetworkAccessManager.h"
#include <lastfm/ws.h>
#include <lastfm/User.h>
#include <lastfm/XmlQuery.h>
#include <lastfm/Track.h>
#include <boost/bind.hpp>
using namespace Tomahawk::Accounts;
@@ -101,7 +102,7 @@ LastFmConfig::testLogin()
query[ "authToken" ] = authToken;
// ensure they have up-to-date settings
lastfm::setNetworkAccessManager( TomahawkUtils::nam() );
lastfm::setNetworkAccessManager( Tomahawk::Utils::nam() );
QNetworkReply* authJob = lastfm::ws::post( query );

View File

@@ -32,6 +32,7 @@
#include "accounts/lastfm/LastFmAccount.h"
#include "Source.h"
#include "TomahawkSettings.h"
#include "utils/NetworkAccessManager.h"
#include <lastfm/ws.h>
#include <lastfm/XmlQuery.h>
@@ -64,7 +65,7 @@ LastFmInfoPlugin::init()
lastfm::ws::ApiKey = "7194b85b6d1f424fe1668173a78c0c4a";
lastfm::ws::SharedSecret = "ba80f1df6d27ae63e9cb1d33ccf2052f";
lastfm::ws::Username = m_account.data()->username();
lastfm::setNetworkAccessManager( TomahawkUtils::nam() );
lastfm::setNetworkAccessManager( Tomahawk::Utils::nam() );
m_pw = m_account.data()->password();
@@ -411,7 +412,7 @@ LastFmInfoPlugin::fetchAlbumInfo( Tomahawk::InfoSystem::InfoRequestData requestD
void
LastFmInfoPlugin::notInCacheSlot( QHash<QString, QString> criteria, Tomahawk::InfoSystem::InfoRequestData requestData )
{
if ( !TomahawkUtils::nam() )
if ( !Tomahawk::Utils::nam() )
{
tLog() << "Have a null QNAM, uh oh";
emit info( requestData, QVariant() );
@@ -761,7 +762,7 @@ LastFmInfoPlugin::artistInfoReturned()
imgurl = artist.imageUrl( lastfm::AbstractType::LargeImage );
QNetworkRequest req( imgurl );
QNetworkReply* newReply = TomahawkUtils::nam()->get( req );
QNetworkReply* newReply = Tomahawk::Utils::nam()->get( req );
newReply->setProperty( "requestData", reply->property( "requestData" ) );
connect( newReply, SIGNAL( finished() ), SLOT( coverArtReturned() ) );
}
@@ -786,7 +787,7 @@ LastFmInfoPlugin::albumInfoReturned()
imgurl = QUrl( lfm["album"]["image size=large"].text() );
QNetworkRequest req( imgurl );
QNetworkReply* newReply = TomahawkUtils::nam()->get( req );
QNetworkReply* newReply = Tomahawk::Utils::nam()->get( req );
newReply->setProperty( "requestData", reply->property( "requestData" ) );
connect( newReply, SIGNAL( finished() ), SLOT( coverArtReturned() ) );
}
@@ -833,7 +834,7 @@ LastFmInfoPlugin::coverArtReturned()
{
// Follow HTTP redirect
QNetworkRequest req( redir );
QNetworkReply* newReply = TomahawkUtils::nam()->get( req );
QNetworkReply* newReply = Tomahawk::Utils::nam()->get( req );
newReply->setProperty( "requestData", reply->property( "requestData" ) );
connect( newReply, SIGNAL( finished() ), SLOT( coverArtReturned() ) );
}
@@ -877,7 +878,7 @@ LastFmInfoPlugin::artistImagesReturned()
}
else
{
if ( !TomahawkUtils::nam() )
if ( !Tomahawk::Utils::nam() )
{
tLog() << Q_FUNC_INFO << "Uh oh, nam is null";
emit info( reply->property( "requestData" ).value< Tomahawk::InfoSystem::InfoRequestData >(), QVariant() );
@@ -885,7 +886,7 @@ LastFmInfoPlugin::artistImagesReturned()
}
// Follow HTTP redirect
QNetworkRequest req( redir );
QNetworkReply* newReply = TomahawkUtils::nam()->get( req );
QNetworkReply* newReply = Tomahawk::Utils::nam()->get( req );
newReply->setProperty( "requestData", reply->property( "requestData" ) );
connect( newReply, SIGNAL( finished() ), SLOT( artistImagesReturned() ) );
}

View File

@@ -21,6 +21,7 @@
#include "SpotifyAccount.h"
#include "utils/Closure.h"
#include "utils/Logger.h"
#include "utils/NetworkAccessManager.h"
#include <qjson/parser.h>
@@ -144,7 +145,7 @@ SpotifyInfoPlugin::notInCacheSlot( InfoStringHash criteria, InfoRequestData requ
QUrl lookupUrl( "http://ws.spotify.com/search/1/album.json" );
TomahawkUtils::urlAddQueryItem( lookupUrl, "q", QString( "%1 %2" ).arg( artist ).arg( album ) );
QNetworkReply * reply = TomahawkUtils::nam()->get( QNetworkRequest( lookupUrl ) );
QNetworkReply * reply = Tomahawk::Utils::nam()->get( QNetworkRequest( lookupUrl ) );
NewClosure( reply, SIGNAL( finished() ), this, SLOT( albumIdLookupFinished( QNetworkReply*, Tomahawk::InfoSystem::InfoRequestData ) ), reply, requestData );
}
else
@@ -234,7 +235,7 @@ SpotifyInfoPlugin::albumIdLookupFinished( QNetworkReply* reply, const InfoReques
QUrl lookupUrl( QString( "http://spotikea.tomahawk-player.org/browse/%1" ).arg( id ) );
QNetworkReply * reply = TomahawkUtils::nam()->get( QNetworkRequest( lookupUrl ) );
QNetworkReply * reply = Tomahawk::Utils::nam()->get( QNetworkRequest( lookupUrl ) );
NewClosure( reply, SIGNAL( finished() ), this, SLOT( albumContentsLookupFinished( QNetworkReply*, Tomahawk::InfoSystem::InfoRequestData ) ), reply, requestData );
}
else

View File

@@ -33,6 +33,7 @@
#include "utils/Closure.h"
#include "utils/TomahawkUtils.h"
#include "utils/Logger.h"
#include "utils/NetworkAccessManager.h"
#include "AclRegistry.h"
#include "BufferIoDevice.h"
@@ -183,7 +184,7 @@ Servent::startListening( QHostAddress ha, bool upnp, int port, Tomahawk::Network
d->externalPort = externalPort;
if ( autoDetectExternalIp )
{
QNetworkReply* reply = TomahawkUtils::nam()->get( QNetworkRequest( QUrl( "http://toma.hk/?stat=1" ) ) );
QNetworkReply* reply = Tomahawk::Utils::nam()->get( QNetworkRequest( QUrl( "http://toma.hk/?stat=1" ) ) );
connect( reply, SIGNAL( finished() ), SLOT( ipDetected() ) );
// Not emitting ready here as we are not done.
}
@@ -1385,7 +1386,7 @@ Servent::httpIODeviceFactory( const Tomahawk::result_ptr& result,
boost::function< void ( QSharedPointer< QIODevice >& ) > callback )
{
QNetworkRequest req( result->url() );
QNetworkReply* reply = TomahawkUtils::nam()->get( req );
QNetworkReply* reply = Tomahawk::Utils::nam()->get( req );
//boost::functions cannot accept temporaries as parameters
QSharedPointer< QIODevice > sp = QSharedPointer< QIODevice >( reply, &QObject::deleteLater );

View File

@@ -40,6 +40,7 @@
#include "SourceList.h"
#include "TomahawkSettings.h"
#include "TomahawkVersion.h"
#include "utils/NetworkAccessManager.h"
#include <QFile>
#include <QFileInfo>
@@ -873,7 +874,7 @@ JSResolver::loadCollections()
{
QNetworkRequest req( iconUrl );
tDebug() << "Creating a QNetworkReply with url:" << req.url().toString();
QNetworkReply* reply = TomahawkUtils::nam()->get( req );
QNetworkReply* reply = Tomahawk::Utils::nam()->get( req );
reply->setProperty( "collectionName", collection->name() );
connect( reply, SIGNAL( finished() ),

View File

@@ -27,6 +27,7 @@
#include "resolvers/ScriptEngine.h"
#include "network/Servent.h"
#include "utils/Logger.h"
#include "utils/NetworkAccessManager.h"
#include "config.h"
#include "JSResolver_p.h"
@@ -446,7 +447,7 @@ JSResolverHelper::returnStreamUrl( const QString& streamUrl, boost::function< vo
QUrl url = QUrl::fromEncoded( streamUrl.toUtf8() );
QNetworkRequest req( url );
tDebug() << "Creating a QNetowrkReply with url:" << req.url().toString();
QNetworkReply* reply = TomahawkUtils::nam()->get( req );
QNetworkReply* reply = Tomahawk::Utils::nam()->get( req );
//boost::functions cannot accept temporaries as parameters
sp = QSharedPointer< QIODevice >( reply, &QObject::deleteLater );

View File

@@ -30,6 +30,9 @@
#include "accounts/AccountConfigWidget.h"
#include "utils/TomahawkUtilsGui.h"
#include "utils/Logger.h"
#include "utils/NetworkAccessManager.h"
#include "utils/NetworkProxyFactory.h"
#include <QtEndian>
#include <QFileInfo>
@@ -57,7 +60,7 @@ ScriptResolver::ScriptResolver( const QString& exe )
startProcess();
if ( !TomahawkUtils::nam() )
if ( !Tomahawk::Utils::nam() )
return;
// set the name to the binary, if we launch properly we'll get the name the resolver reports
@@ -136,7 +139,7 @@ ScriptResolver::sendConfig()
m_configSent = true;
TomahawkUtils::NetworkProxyFactory* factory = dynamic_cast<TomahawkUtils::NetworkProxyFactory*>( TomahawkUtils::nam()->proxyFactory() );
Tomahawk::Utils::NetworkProxyFactory* factory = dynamic_cast<Tomahawk::Utils::NetworkProxyFactory*>( Tomahawk::Utils::nam()->proxyFactory() );
QNetworkProxy proxy = factory->proxy();
QString proxyType = ( proxy.type() == QNetworkProxy::Socks5Proxy ? "socks5" : "none" );
m.insert( "proxytype", proxyType );

View File

@@ -42,6 +42,7 @@
#include "utils/NetworkReply.h"
#include "utils/TomahawkUtils.h"
#include "utils/Logger.h"
#include "utils/NetworkAccessManager.h"
using namespace Tomahawk;
@@ -133,7 +134,7 @@ GroovesharkParser::lookupGroovesharkPlaylist( const QString& linkRaw )
QString hash = QCA::arrayToHex( resultArray.toByteArray() );
QUrl url = QUrl( base_url + hash );
NetworkReply* reply = new NetworkReply( TomahawkUtils::nam()->post( QNetworkRequest( url ), data ) );
NetworkReply* reply = new NetworkReply( Tomahawk::Utils::nam()->post( QNetworkRequest( url ), data ) );
connect( reply, SIGNAL( finished() ), SLOT( groovesharkLookupFinished() ) );
#ifndef ENABLE_HEADLESS
@@ -150,7 +151,7 @@ GroovesharkParser::lookupGroovesharkTrack( const QString& track )
{
tLog() << "Parsing Grooveshark Track Page:" << track;
NetworkReply* reply = new NetworkReply( TomahawkUtils::nam()->get( QNetworkRequest( QUrl( track ) ) ) );
NetworkReply* reply = new NetworkReply( Tomahawk::Utils::nam()->get( QNetworkRequest( QUrl( track ) ) ) );
connect( reply, SIGNAL( finished() ), SLOT( trackPageFetchFinished() ) );
#ifndef ENABLE_HEADLESS

View File

@@ -33,6 +33,7 @@
#include "utils/NetworkReply.h"
#include "utils/TomahawkUtils.h"
#include "utils/Logger.h"
#include "utils/NetworkAccessManager.h"
// Forward Declarations breaking QSharedPointer
#if QT_VERSION < QT_VERSION_CHECK( 5, 0, 0 )
@@ -112,7 +113,7 @@ ItunesParser::lookupItunesUri( const QString& link )
url = QUrl( QString( "http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStoreServices.woa/wa/wsLookup?id=%1&entity=song" ).arg( ( trackId.isEmpty() ? id : trackId ) ) );
}
NetworkReply* reply = new NetworkReply( TomahawkUtils::nam()->get( QNetworkRequest( url ) ) );
NetworkReply* reply = new NetworkReply( Tomahawk::Utils::nam()->get( QNetworkRequest( url ) ) );
connect( reply, SIGNAL( finished() ), SLOT( itunesResponseLookupFinished() ) );
#ifndef ENABLE_HEADLESS

View File

@@ -22,6 +22,7 @@
#include "utils/Logger.h"
#include "utils/NetworkReply.h"
#include "utils/TomahawkUtils.h"
#include "utils/NetworkAccessManager.h"
#include "Playlist.h"
#include "SourceList.h"
@@ -61,8 +62,8 @@ JSPFLoader::load( const QUrl& url )
{
QNetworkRequest request( url );
Q_ASSERT( TomahawkUtils::nam() != 0 );
NetworkReply* reply = new NetworkReply( TomahawkUtils::nam()->get( request ) );
Q_ASSERT( Tomahawk::Utils::nam() != 0 );
NetworkReply* reply = new NetworkReply( Tomahawk::Utils::nam()->get( request ) );
connect( reply, SIGNAL( finished() ), SLOT( networkLoadFinished() ) );
connect( reply, SIGNAL( error( QNetworkReply::NetworkError ) ), SLOT( networkError( QNetworkReply::NetworkError ) ) );

View File

@@ -0,0 +1,278 @@
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
*
* Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org>
* Copyright 2010-2011, Leo Franchi <lfranchi@kde.org>
* Copyright 2010-2012, Jeff Mitchell <jeff@tomahawk-player.org>
* Copyright 2013, Dominik Schmidt <domme@tomahawk-player.org>
*
* Tomahawk is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Tomahawk is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
*/
#include "NetworkAccessManager.h"
#include "NetworkProxyFactory.h"
#include "utils/Logger.h"
// TODO: get rid of this here!
#include "TomahawkSettings.h"
#include <QMutex>
#include <QStringList>
#include <QThread>
#include <QCoreApplication>
#include <QNetworkConfiguration>
namespace Tomahawk
{
namespace Utils
{
static QMutex s_noProxyHostsMutex;
static QStringList s_noProxyHosts;
NetworkProxyFactory::NetworkProxyFactory( const NetworkProxyFactory& other )
{
m_proxy = QNetworkProxy( other.m_proxy );
}
QList< QNetworkProxy >
NetworkProxyFactory::queryProxy( const QNetworkProxyQuery& query )
{
//tDebug() << Q_FUNC_INFO << "query hostname is" << query.peerHostName() << ", proxy host is" << m_proxy.hostName();
QList< QNetworkProxy > proxies;
QString hostname = query.peerHostName();
s_noProxyHostsMutex.lock();
if ( !hostname.isEmpty() && s_noProxyHosts.contains( hostname ) )
proxies << QNetworkProxy::NoProxy << systemProxyForQuery( query );
else if ( m_proxy.hostName().isEmpty() || TomahawkSettings::instance()->proxyType() == QNetworkProxy::NoProxy )
proxies << systemProxyForQuery( query );
else
proxies << m_proxy << systemProxyForQuery( query );
s_noProxyHostsMutex.unlock();
return proxies;
}
void
NetworkProxyFactory::setNoProxyHosts( const QStringList& hosts )
{
QStringList newList;
tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "No-proxy hosts:" << hosts;
foreach ( const QString& host, hosts )
{
QString munge = host.simplified();
newList << munge;
//TODO: wildcard support
}
tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "New no-proxy hosts:" << newList;
s_noProxyHostsMutex.lock();
s_noProxyHosts = newList;
s_noProxyHostsMutex.unlock();
}
void
NetworkProxyFactory::setProxy( const QNetworkProxy& proxy )
{
m_proxyChanged = false;
if ( m_proxy != proxy )
m_proxyChanged = true;
m_proxy = proxy;
QFlags< QNetworkProxy::Capability > proxyCaps;
proxyCaps |= QNetworkProxy::TunnelingCapability;
proxyCaps |= QNetworkProxy::ListeningCapability;
if ( TomahawkSettings::instance()->proxyDns() )
proxyCaps |= QNetworkProxy::HostNameLookupCapability;
m_proxy.setCapabilities( proxyCaps );
tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "Proxy using host" << proxy.hostName() << "and port" << proxy.port();
tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "setting proxy to use proxy DNS?" << (TomahawkSettings::instance()->proxyDns() ? "true" : "false");
}
NetworkProxyFactory&
NetworkProxyFactory::operator=( const NetworkProxyFactory& rhs )
{
tDebug( LOGVERBOSE ) << Q_FUNC_INFO;
if ( this != &rhs )
{
m_proxy = QNetworkProxy( rhs.m_proxy );
}
return *this;
}
bool NetworkProxyFactory::operator==( const NetworkProxyFactory& other ) const
{
tDebug( LOGVERBOSE ) << Q_FUNC_INFO;
if ( m_proxy != other.m_proxy )
return false;
return true;
}
static QMap< QThread*, QNetworkAccessManager* > s_threadNamHash;
static QMap< QThread*, NetworkProxyFactory* > s_threadProxyFactoryHash;
static QMutex s_namAccessMutex;
NetworkProxyFactory*
proxyFactory( bool makeClone, bool noMutexLocker )
{
// Don't lock if being called from nam()
tDebug( LOGVERBOSE ) << Q_FUNC_INFO;
QMutex otherMutex;
QMutexLocker locker( noMutexLocker ? &otherMutex : &s_namAccessMutex );
if ( !makeClone )
{
if ( s_threadProxyFactoryHash.contains( QThread::currentThread() ) )
return s_threadProxyFactoryHash[ QThread::currentThread() ];
}
// create a new proxy factory for this thread
NetworkProxyFactory *newProxyFactory = new NetworkProxyFactory();
if ( s_threadProxyFactoryHash.contains( QCoreApplication::instance()->thread() ) )
{
NetworkProxyFactory *mainProxyFactory = s_threadProxyFactoryHash[ QCoreApplication::instance()->thread() ];
*newProxyFactory = *mainProxyFactory;
}
if ( !makeClone )
s_threadProxyFactoryHash[ QThread::currentThread() ] = newProxyFactory;
return newProxyFactory;
}
void
setProxyFactory( NetworkProxyFactory* factory, bool noMutexLocker )
{
tDebug( LOGVERBOSE ) << Q_FUNC_INFO;
Q_ASSERT( factory );
// Don't lock if being called from setNam()
QMutex otherMutex;
QMutexLocker locker( noMutexLocker ? &otherMutex : &s_namAccessMutex );
if ( !s_threadProxyFactoryHash.contains( QCoreApplication::instance()->thread() ) )
return;
if ( QThread::currentThread() == QCoreApplication::instance()->thread() )
{
foreach ( QThread* thread, s_threadProxyFactoryHash.keys() )
{
if ( thread != QThread::currentThread() )
{
NetworkProxyFactory *currFactory = s_threadProxyFactoryHash[ thread ];
*currFactory = *factory;
}
}
QNetworkProxyFactory::setApplicationProxyFactory( factory );
}
*s_threadProxyFactoryHash[ QThread::currentThread() ] = *factory;
}
QNetworkAccessManager*
nam()
{
QMutexLocker locker( &s_namAccessMutex );
if ( s_threadNamHash.contains( QThread::currentThread() ) )
{
//tDebug() << Q_FUNC_INFO << "Found current thread in nam hash";
return s_threadNamHash[ QThread::currentThread() ];
}
if ( !s_threadNamHash.contains( QCoreApplication::instance()->thread() ) )
{
if ( QThread::currentThread() == QCoreApplication::instance()->thread() )
{
setNam( new QNetworkAccessManager(), true );
return s_threadNamHash[ QThread::currentThread() ];
}
else
return 0;
}
tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "Found gui thread in nam hash";
// Create a nam for this thread based on the main thread's settings but with its own proxyfactory
QNetworkAccessManager *mainNam = s_threadNamHash[ QCoreApplication::instance()->thread() ];
QNetworkAccessManager* newNam = new QNetworkAccessManager();
newNam->setConfiguration( QNetworkConfiguration( mainNam->configuration() ) );
newNam->setNetworkAccessible( mainNam->networkAccessible() );
newNam->setProxyFactory( proxyFactory( false, true ) );
s_threadNamHash[ QThread::currentThread() ] = newNam;
tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "created new nam for thread" << QThread::currentThread();
//QNetworkProxy proxy = dynamic_cast< NetworkProxyFactory* >( newNam->proxyFactory() )->proxy();
//tDebug() << Q_FUNC_INFO << "reply proxy properties:" << proxy.type() << proxy.hostName() << proxy.port();
return newNam;
}
void
setNam( QNetworkAccessManager* nam, bool noMutexLocker )
{
Q_ASSERT( nam );
// Don't lock if being called from nam()()
QMutex otherMutex;
QMutexLocker locker( noMutexLocker ? &otherMutex : &s_namAccessMutex );
if ( !s_threadNamHash.contains( QCoreApplication::instance()->thread() ) &&
QThread::currentThread() == QCoreApplication::instance()->thread() )
{
tDebug( LOGVERBOSE ) << "creating initial gui thread (" << QCoreApplication::instance()->thread() << ") nam";
// Should only get here on first initialization of the nam
TomahawkSettings *s = TomahawkSettings::instance();
NetworkProxyFactory* proxyFactory = new NetworkProxyFactory();
if ( s->proxyType() != QNetworkProxy::NoProxy && !s->proxyHost().isEmpty() )
{
tDebug( LOGVERBOSE ) << "Setting proxy to saved values";
QNetworkProxy proxy( s->proxyType(), s->proxyHost(), s->proxyPort(), s->proxyUsername(), s->proxyPassword() );
proxyFactory->setProxy( proxy );
//FIXME: Jreen is broke without this
//QNetworkProxy::setApplicationProxy( proxy );
s_noProxyHostsMutex.lock();
if ( !s->proxyNoProxyHosts().isEmpty() && s_noProxyHosts.isEmpty() )
{
s_noProxyHostsMutex.unlock();
proxyFactory->setNoProxyHosts( s->proxyNoProxyHosts().split( ',', QString::SkipEmptyParts ) );
}
else
s_noProxyHostsMutex.unlock();
}
QNetworkProxyFactory::setApplicationProxyFactory( proxyFactory );
nam->setProxyFactory( proxyFactory );
s_threadNamHash[ QThread::currentThread() ] = nam;
s_threadProxyFactoryHash[ QThread::currentThread() ] = proxyFactory;
return;
}
s_threadNamHash[ QThread::currentThread() ] = nam;
if ( QThread::currentThread() == QCoreApplication::instance()->thread() )
setProxyFactory( dynamic_cast< NetworkProxyFactory* >( nam->proxyFactory() ), true );
}
}
}

View File

@@ -0,0 +1,38 @@
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
*
* Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org>
* Copyright 2010-2011, Leo Franchi <lfranchi@kde.org>
* Copyright 2010-2012, Jeff Mitchell <jeff@tomahawk-player.org>
* Copyright 2013, Dominik Schmidt <domme@tomahawk-player.org>
*
* Tomahawk is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Tomahawk is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef TOMAHAWK_UTILS_NETWORKACCESSMANAGER_H
#define TOMAHAWK_UTILS_NETWORKACCESSMANAGER_H
#include "DllMacro.h"
class QNetworkAccessManager;
namespace Tomahawk
{
namespace Utils
{
DLLEXPORT QNetworkAccessManager* nam();
DLLEXPORT void setNam( QNetworkAccessManager* nam, bool noMutexLocker = false );
}
}
#endif // TOMAHAWK_UTILS_NETWORKACCESSMANAGER_H

View File

@@ -0,0 +1,24 @@
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
*
* Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org>
* Copyright 2010-2011, Leo Franchi <lfranchi@kde.org>
* Copyright 2010-2012, Jeff Mitchell <jeff@tomahawk-player.org>
* Copyright 2013, Dominik Schmidt <domme@tomahawk-player.org>
*
* Tomahawk is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Tomahawk is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
*/
#include "NetworkProxyFactory.h"
//MAJORHACK: all implementation in NetworkAccessManager.cpp even for NetworkProxyFactory.h because they share private s_* vars :C

View File

@@ -0,0 +1,67 @@
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
*
* Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org>
* Copyright 2010-2011, Leo Franchi <lfranchi@kde.org>
* Copyright 2010-2012, Jeff Mitchell <jeff@tomahawk-player.org>
* Copyright 2013, Dominik Schmidt <domme@tomahawk-player.org>
*
* Tomahawk is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Tomahawk is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef TOMAHAWK_UTILS_NETWORKPROXYFACTORY_H
#define TOMAHAWK_UTILS_NETWORKPROXYFACTORY_H
#include <QNetworkProxyFactory>
#include <QStringList>
#include "DllMacro.h"
namespace Tomahawk
{
namespace Utils
{
class DLLEXPORT NetworkProxyFactory : public QNetworkProxyFactory
{
public:
NetworkProxyFactory()
: m_proxy( QNetworkProxy::NoProxy )
, m_proxyChanged( false )
{}
NetworkProxyFactory( const NetworkProxyFactory &other );
virtual ~NetworkProxyFactory() {}
virtual QList< QNetworkProxy > queryProxy( const QNetworkProxyQuery & query = QNetworkProxyQuery() );
virtual void setNoProxyHosts( const QStringList &hosts );
virtual QStringList noProxyHosts() const { return m_noProxyHosts; }
virtual void setProxy( const QNetworkProxy &proxy );
virtual QNetworkProxy proxy() { return m_proxy; }
virtual NetworkProxyFactory& operator=( const NetworkProxyFactory &rhs );
virtual bool operator==( const NetworkProxyFactory &other ) const;
bool changed() const { return m_proxyChanged; }
private:
QStringList m_noProxyHosts;
QNetworkProxy m_proxy;
bool m_proxyChanged;
};
DLLEXPORT void setProxyFactory( NetworkProxyFactory* factory, bool noMutexLocker = false );
DLLEXPORT NetworkProxyFactory* proxyFactory( bool makeClone = false, bool noMutexLocker = false );
}
}
#endif // TOMAHAWK_UTILS_NETWORKPROXYFACTORY_H

View File

@@ -20,6 +20,7 @@
#include "utils/TomahawkUtils.h"
#include "utils/Logger.h"
#include "utils/NetworkAccessManager.h"
#include <QNetworkAccessManager>
@@ -62,7 +63,7 @@ NetworkReply::load( const QUrl& url )
m_url = url;
QNetworkRequest request( url );
Q_ASSERT( TomahawkUtils::nam() != 0 );
Q_ASSERT( Tomahawk::Utils::nam() != 0 );
QNetworkAccessManager::Operation op = m_reply->operation();
m_reply->deleteLater();
@@ -70,11 +71,11 @@ NetworkReply::load( const QUrl& url )
switch ( op )
{
case QNetworkAccessManager::HeadOperation:
m_reply = TomahawkUtils::nam()->head( request );
m_reply = Tomahawk::Utils::nam()->head( request );
break;
default:
m_reply = TomahawkUtils::nam()->get( request );
m_reply = Tomahawk::Utils::nam()->get( request );
}
connect( m_reply, SIGNAL( finished() ), SLOT( networkLoadFinished() ) );

View File

@@ -31,6 +31,7 @@
#include "utils/NetworkReply.h"
#include "utils/TomahawkUtils.h"
#include "utils/Logger.h"
#include "utils/NetworkAccessManager.h"
#include <qjson/parser.h>
@@ -130,7 +131,7 @@ RdioParser::fetchObjectsFromUrl( const QString& url, DropJob::DropType type )
QNetworkRequest request = generateRequest( "getObjectFromUrl", cleanedUrl, params, &data );
request.setHeader( QNetworkRequest::ContentTypeHeader, QLatin1String( "application/x-www-form-urlencoded" ) );
NetworkReply* reply = new NetworkReply( TomahawkUtils::nam()->post( request, data ) );
NetworkReply* reply = new NetworkReply( Tomahawk::Utils::nam()->post( request, data ) );
connect( reply, SIGNAL( finished() ), SLOT( rdioReturned() ) );
#ifndef ENABLE_HEADLESS

View File

@@ -27,6 +27,7 @@
#include "Result.h"
#include "Source.h"
#include "utils/Logger.h"
#include "utils/NetworkAccessManager.h"
using namespace Tomahawk;
@@ -55,7 +56,7 @@ ResultUrlChecker::check()
if ( url.isEmpty() || !url.toString().startsWith( "http" ) )
continue;
NetworkReply* reply = new NetworkReply( TomahawkUtils::nam()->head( QNetworkRequest( url ) ) );
NetworkReply* reply = new NetworkReply( Tomahawk::Utils::nam()->head( QNetworkRequest( url ) ) );
m_replies.insert( reply, result );
connect( reply, SIGNAL( finished() ), SLOT( headFinished() ) );
}

View File

@@ -32,6 +32,7 @@
#include "utils/NetworkReply.h"
#include "utils/TomahawkUtilsGui.h"
#include "utils/Logger.h"
#include "utils/NetworkAccessManager.h"
using namespace Tomahawk;
@@ -78,7 +79,7 @@ ShortenedLinkParser::lookupUrl( const QString& url )
if ( cleaned.contains( "/#/s/" ) )
cleaned.replace( "/#", "" );
NetworkReply* reply = new NetworkReply( TomahawkUtils::nam()->get( QNetworkRequest( QUrl( cleaned ) ) ) );
NetworkReply* reply = new NetworkReply( Tomahawk::Utils::nam()->get( QNetworkRequest( QUrl( cleaned ) ) ) );
connect( reply, SIGNAL( finished() ), SLOT( lookupFinished() ) );
m_queries.insert( reply );

View File

@@ -34,6 +34,7 @@
#include "utils/NetworkReply.h"
#include "utils/TomahawkUtils.h"
#include "utils/Logger.h"
#include "utils/NetworkAccessManager.h"
using namespace Tomahawk;
@@ -175,7 +176,7 @@ SpotifyParser::lookupSpotifyBrowse( const QString& link )
url = QUrl( QString( SPOTIFY_PLAYLIST_API_URL "/browse/%1/%2" ).arg( m_browseUri )
.arg ( m_limit ) );
NetworkReply* reply = new NetworkReply( TomahawkUtils::nam()->get( QNetworkRequest( url ) ) );
NetworkReply* reply = new NetworkReply( Tomahawk::Utils::nam()->get( QNetworkRequest( url ) ) );
connect( reply, SIGNAL( finished() ), SLOT( spotifyBrowseFinished() ) );
#ifndef ENABLE_HEADLESS
@@ -204,7 +205,7 @@ SpotifyParser::lookupTrack( const QString& link )
QUrl url = QUrl( QString( "http://ws.spotify.com/lookup/1/.json?uri=%1" ).arg( uri ) );
NetworkReply* reply = new NetworkReply( TomahawkUtils::nam()->get( QNetworkRequest( url ) ) );
NetworkReply* reply = new NetworkReply( Tomahawk::Utils::nam()->get( QNetworkRequest( url ) ) );
connect( reply, SIGNAL( finished() ), SLOT( spotifyTrackLookupFinished() ) );
#ifndef ENABLE_HEADLESS

View File

@@ -428,243 +428,6 @@ levenshtein( const QString& source, const QString& target )
}
static QMutex s_noProxyHostsMutex;
static QStringList s_noProxyHosts;
NetworkProxyFactory::NetworkProxyFactory( const NetworkProxyFactory& other )
{
m_proxy = QNetworkProxy( other.m_proxy );
}
QList< QNetworkProxy >
NetworkProxyFactory::queryProxy( const QNetworkProxyQuery& query )
{
//tDebug() << Q_FUNC_INFO << "query hostname is" << query.peerHostName() << ", proxy host is" << m_proxy.hostName();
QList< QNetworkProxy > proxies;
QString hostname = query.peerHostName();
s_noProxyHostsMutex.lock();
if ( !hostname.isEmpty() && s_noProxyHosts.contains( hostname ) )
proxies << QNetworkProxy::NoProxy << systemProxyForQuery( query );
else if ( m_proxy.hostName().isEmpty() || TomahawkSettings::instance()->proxyType() == QNetworkProxy::NoProxy )
proxies << systemProxyForQuery( query );
else
proxies << m_proxy << systemProxyForQuery( query );
s_noProxyHostsMutex.unlock();
return proxies;
}
void
NetworkProxyFactory::setNoProxyHosts( const QStringList& hosts )
{
QStringList newList;
tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "No-proxy hosts:" << hosts;
foreach ( const QString& host, hosts )
{
QString munge = host.simplified();
newList << munge;
//TODO: wildcard support
}
tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "New no-proxy hosts:" << newList;
s_noProxyHostsMutex.lock();
s_noProxyHosts = newList;
s_noProxyHostsMutex.unlock();
}
void
NetworkProxyFactory::setProxy( const QNetworkProxy& proxy )
{
m_proxyChanged = false;
if ( m_proxy != proxy )
m_proxyChanged = true;
m_proxy = proxy;
QFlags< QNetworkProxy::Capability > proxyCaps;
proxyCaps |= QNetworkProxy::TunnelingCapability;
proxyCaps |= QNetworkProxy::ListeningCapability;
if ( TomahawkSettings::instance()->proxyDns() )
proxyCaps |= QNetworkProxy::HostNameLookupCapability;
m_proxy.setCapabilities( proxyCaps );
tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "Proxy using host" << proxy.hostName() << "and port" << proxy.port();
tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "setting proxy to use proxy DNS?" << (TomahawkSettings::instance()->proxyDns() ? "true" : "false");
}
NetworkProxyFactory&
NetworkProxyFactory::operator=( const NetworkProxyFactory& rhs )
{
tDebug( LOGVERBOSE ) << Q_FUNC_INFO;
if ( this != &rhs )
{
m_proxy = QNetworkProxy( rhs.m_proxy );
}
return *this;
}
bool NetworkProxyFactory::operator==( const NetworkProxyFactory& other ) const
{
tDebug( LOGVERBOSE ) << Q_FUNC_INFO;
if ( m_proxy != other.m_proxy )
return false;
return true;
}
static QMap< QThread*, QNetworkAccessManager* > s_threadNamHash;
static QMap< QThread*, NetworkProxyFactory* > s_threadProxyFactoryHash;
static QMutex s_namAccessMutex;
NetworkProxyFactory*
proxyFactory( bool makeClone, bool noMutexLocker )
{
// Don't lock if being called from nam()
tDebug( LOGVERBOSE ) << Q_FUNC_INFO;
QMutex otherMutex;
QMutexLocker locker( noMutexLocker ? &otherMutex : &s_namAccessMutex );
if ( !makeClone )
{
if ( s_threadProxyFactoryHash.contains( QThread::currentThread() ) )
return s_threadProxyFactoryHash[ QThread::currentThread() ];
}
// create a new proxy factory for this thread
TomahawkUtils::NetworkProxyFactory *newProxyFactory = new TomahawkUtils::NetworkProxyFactory();
if ( s_threadProxyFactoryHash.contains( QCoreApplication::instance()->thread() ) )
{
TomahawkUtils::NetworkProxyFactory *mainProxyFactory = s_threadProxyFactoryHash[ QCoreApplication::instance()->thread() ];
*newProxyFactory = *mainProxyFactory;
}
if ( !makeClone )
s_threadProxyFactoryHash[ QThread::currentThread() ] = newProxyFactory;
return newProxyFactory;
}
void
setProxyFactory( NetworkProxyFactory* factory, bool noMutexLocker )
{
tDebug( LOGVERBOSE ) << Q_FUNC_INFO;
Q_ASSERT( factory );
// Don't lock if being called from setNam()
QMutex otherMutex;
QMutexLocker locker( noMutexLocker ? &otherMutex : &s_namAccessMutex );
if ( !s_threadProxyFactoryHash.contains( QCoreApplication::instance()->thread() ) )
return;
if ( QThread::currentThread() == QCoreApplication::instance()->thread() )
{
foreach ( QThread* thread, s_threadProxyFactoryHash.keys() )
{
if ( thread != QThread::currentThread() )
{
TomahawkUtils::NetworkProxyFactory *currFactory = s_threadProxyFactoryHash[ thread ];
*currFactory = *factory;
}
}
QNetworkProxyFactory::setApplicationProxyFactory( factory );
}
*s_threadProxyFactoryHash[ QThread::currentThread() ] = *factory;
}
QNetworkAccessManager*
nam()
{
QMutexLocker locker( &s_namAccessMutex );
if ( s_threadNamHash.contains( QThread::currentThread() ) )
{
//tDebug() << Q_FUNC_INFO << "Found current thread in nam hash";
return s_threadNamHash[ QThread::currentThread() ];
}
if ( !s_threadNamHash.contains( QCoreApplication::instance()->thread() ) )
{
if ( QThread::currentThread() == QCoreApplication::instance()->thread() )
{
setNam( new QNetworkAccessManager(), true );
return s_threadNamHash[ QThread::currentThread() ];
}
else
return 0;
}
tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "Found gui thread in nam hash";
// Create a nam for this thread based on the main thread's settings but with its own proxyfactory
QNetworkAccessManager *mainNam = s_threadNamHash[ QCoreApplication::instance()->thread() ];
QNetworkAccessManager* newNam = new QNetworkAccessManager();
newNam->setConfiguration( QNetworkConfiguration( mainNam->configuration() ) );
newNam->setNetworkAccessible( mainNam->networkAccessible() );
newNam->setProxyFactory( proxyFactory( false, true ) );
s_threadNamHash[ QThread::currentThread() ] = newNam;
tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "created new nam for thread" << QThread::currentThread();
//QNetworkProxy proxy = dynamic_cast< TomahawkUtils::NetworkProxyFactory* >( newNam->proxyFactory() )->proxy();
//tDebug() << Q_FUNC_INFO << "reply proxy properties:" << proxy.type() << proxy.hostName() << proxy.port();
return newNam;
}
void
setNam( QNetworkAccessManager* nam, bool noMutexLocker )
{
Q_ASSERT( nam );
// Don't lock if being called from nam()()
QMutex otherMutex;
QMutexLocker locker( noMutexLocker ? &otherMutex : &s_namAccessMutex );
if ( !s_threadNamHash.contains( QCoreApplication::instance()->thread() ) &&
QThread::currentThread() == QCoreApplication::instance()->thread() )
{
tDebug( LOGVERBOSE ) << "creating initial gui thread (" << QCoreApplication::instance()->thread() << ") nam";
// Should only get here on first initialization of the nam
TomahawkSettings *s = TomahawkSettings::instance();
TomahawkUtils::NetworkProxyFactory* proxyFactory = new TomahawkUtils::NetworkProxyFactory();
if ( s->proxyType() != QNetworkProxy::NoProxy && !s->proxyHost().isEmpty() )
{
tDebug( LOGVERBOSE ) << "Setting proxy to saved values";
QNetworkProxy proxy( s->proxyType(), s->proxyHost(), s->proxyPort(), s->proxyUsername(), s->proxyPassword() );
proxyFactory->setProxy( proxy );
//FIXME: Jreen is broke without this
//QNetworkProxy::setApplicationProxy( proxy );
s_noProxyHostsMutex.lock();
if ( !s->proxyNoProxyHosts().isEmpty() && s_noProxyHosts.isEmpty() )
{
s_noProxyHostsMutex.unlock();
proxyFactory->setNoProxyHosts( s->proxyNoProxyHosts().split( ',', QString::SkipEmptyParts ) );
}
else
s_noProxyHostsMutex.unlock();
}
QNetworkProxyFactory::setApplicationProxyFactory( proxyFactory );
nam->setProxyFactory( proxyFactory );
s_threadNamHash[ QThread::currentThread() ] = nam;
s_threadProxyFactoryHash[ QThread::currentThread() ] = proxyFactory;
return;
}
s_threadNamHash[ QThread::currentThread() ] = nam;
if ( QThread::currentThread() == QCoreApplication::instance()->thread() )
setProxyFactory( dynamic_cast< TomahawkUtils::NetworkProxyFactory* >( nam->proxyFactory() ), true );
}
bool
newerVersion( const QString& oldVersion, const QString& newVersion )
{

View File

@@ -138,33 +138,6 @@ namespace TomahawkUtils
};
class DLLEXPORT NetworkProxyFactory : public QNetworkProxyFactory
{
public:
NetworkProxyFactory()
: m_proxy( QNetworkProxy::NoProxy )
, m_proxyChanged( false )
{}
NetworkProxyFactory( const NetworkProxyFactory &other );
virtual ~NetworkProxyFactory() {}
virtual QList< QNetworkProxy > queryProxy( const QNetworkProxyQuery & query = QNetworkProxyQuery() );
virtual void setNoProxyHosts( const QStringList &hosts );
virtual QStringList noProxyHosts() const { return m_noProxyHosts; }
virtual void setProxy( const QNetworkProxy &proxy );
virtual QNetworkProxy proxy() { return m_proxy; }
virtual NetworkProxyFactory& operator=( const NetworkProxyFactory &rhs );
virtual bool operator==( const NetworkProxyFactory &other ) const;
bool changed() const { return m_proxyChanged; }
private:
QStringList m_noProxyHosts;
QNetworkProxy m_proxy;
bool m_proxyChanged;
};
DLLEXPORT bool headless();
DLLEXPORT void setHeadless( bool headless );
@@ -185,10 +158,6 @@ namespace TomahawkUtils
DLLEXPORT bool newerVersion( const QString& oldVersion, const QString& newVersion );
DLLEXPORT int levenshtein( const QString& source, const QString& target );
DLLEXPORT NetworkProxyFactory* proxyFactory( bool makeClone = false, bool noMutexLocker = false );
DLLEXPORT void setProxyFactory( TomahawkUtils::NetworkProxyFactory* factory, bool noMutexLocker = false );
DLLEXPORT QNetworkAccessManager* nam();
DLLEXPORT void setNam( QNetworkAccessManager* nam, bool noMutexLocker = false );
DLLEXPORT quint64 infosystemRequestId();
DLLEXPORT QString md5( const QByteArray& data );

View File

@@ -30,6 +30,7 @@
#include "utils/NetworkReply.h"
#include "utils/TomahawkUtils.h"
#include "utils/Logger.h"
#include "utils/NetworkAccessManager.h"
#include "Pipeline.h"
#include "Playlist.h"
@@ -102,8 +103,8 @@ XSPFLoader::load( const QUrl& url )
m_url = url;
QNetworkRequest request( url );
Q_ASSERT( TomahawkUtils::nam() != 0 );
NetworkReply* reply = new NetworkReply( TomahawkUtils::nam()->get( request ) );
Q_ASSERT( Tomahawk::Utils::nam() != 0 );
NetworkReply* reply = new NetworkReply( Tomahawk::Utils::nam()->get( request ) );
connect( reply, SIGNAL( finished() ), SLOT( networkLoadFinished() ) );
connect( reply, SIGNAL( error( QNetworkReply::NetworkError ) ), SLOT( networkError( QNetworkReply::NetworkError ) ) );

View File

@@ -54,6 +54,8 @@
#include "jobview/JobStatusView.h"
#include "jobview/JobStatusModel.h"
#include "jobview/ErrorStatusMessage.h"
#include "utils/NetworkAccessManager.h"
#include "utils/NetworkProxyFactory.h"
#include <QDesktopServices>
#include <QFileDialog>
@@ -290,7 +292,7 @@ SettingsDialog::saveSettings()
m_collectionWidgetUi->dirTree->cleanup();
TomahawkUtils::NetworkProxyFactory* proxyFactory = TomahawkUtils::proxyFactory();
Tomahawk::Utils::NetworkProxyFactory* proxyFactory = Tomahawk::Utils::proxyFactory();
if ( !m_advancedWidgetUi->enableProxyCheckBox->isChecked() )
{
tDebug() << Q_FUNC_INFO << "Got NoProxy selected";

View File

@@ -50,6 +50,7 @@
#include "EchonestCatalogSynchronizer.h"
#include "database/DatabaseImpl.h"
#include "network/Msg.h"
#include "utils/NetworkAccessManager.h"
#include "accounts/lastfm/LastFmAccount.h"
#include "accounts/spotify/SpotifyAccount.h"
@@ -198,7 +199,7 @@ TomahawkApp::init()
tDebug( LOGINFO ) << "Setting NAM.";
// Cause the creation of the nam, but don't need to address it directly, so prevent warning
Q_UNUSED( TomahawkUtils::nam() );
Q_UNUSED( Tomahawk::Utils::nam() );
m_audioEngine = QPointer<AudioEngine>( new AudioEngine );
@@ -617,7 +618,7 @@ TomahawkApp::onInfoSystemReady()
TomahawkSettings* s = TomahawkSettings::instance();
Echonest::Config::instance()->setNetworkAccessManager( TomahawkUtils::nam() );
Echonest::Config::instance()->setNetworkAccessManager( Tomahawk::Utils::nam() );
#ifndef ENABLE_HEADLESS
EchonestGenerator::setupCatalogs();
@@ -687,7 +688,7 @@ TomahawkApp::onInfoSystemReady()
GlobalActionManager::instance();
// check if our spotify playlist api server is up and running, and enable spotify playlist drops if so
QNetworkReply* r = TomahawkUtils::nam()->get( QNetworkRequest( QUrl( SPOTIFY_PLAYLIST_API_URL "/pong" ) ) );
QNetworkReply* r = Tomahawk::Utils::nam()->get( QNetworkRequest( QUrl( SPOTIFY_PLAYLIST_API_URL "/pong" ) ) );
connect( r, SIGNAL( finished() ), this, SLOT( spotifyApiCheckFinished() ) );
#endif

View File

@@ -443,8 +443,8 @@ TomahawkWindow::setupUpdateCheck()
updaterUrl.setUrl( "http://download.tomahawk-player.org/sparklewin" );
qtsparkle::Updater* updater = new qtsparkle::Updater( updaterUrl, this );
Q_ASSERT( TomahawkUtils::nam() != 0 );
updater->SetNetworkAccessManager( TomahawkUtils::nam() );
Q_ASSERT( Tomahawk::Utils::nam() != 0 );
updater->SetNetworkAccessManager( Tomahawk::Utils::nam() );
updater->SetVersion( TomahawkUtils::appFriendlyVersion() );
connect( ActionCollection::instance()->getAction( "checkForUpdates" ), SIGNAL( triggered() ),