diff options
author | Jason E. Hale <jhale@FreeBSD.org> | 2018-04-05 17:20:36 +0000 |
---|---|---|
committer | Jason E. Hale <jhale@FreeBSD.org> | 2018-04-05 17:20:36 +0000 |
commit | aae1055590d13a0be09f8451cce2b58fc18d49c2 (patch) | |
tree | e8fdda6a796b24c407224bd8ed949f431e6b1485 /audio/liblastfm | |
parent | f3c1ddc38b45fa0330bc85c975d26ce32fff9f16 (diff) | |
download | ports-aae1055590d13a0be09f8451cce2b58fc18d49c2.tar.gz ports-aae1055590d13a0be09f8451cce2b58fc18d49c2.zip |
Notes
Diffstat (limited to 'audio/liblastfm')
-rw-r--r-- | audio/liblastfm/Makefile | 7 | ||||
-rw-r--r-- | audio/liblastfm/files/patch-src_UrlBuilder.cpp | 123 | ||||
-rw-r--r-- | audio/liblastfm/files/patch-src_UrlBuilder.h | 31 | ||||
-rw-r--r-- | audio/liblastfm/files/patch-src_mbid__mp3.c | 2 | ||||
-rw-r--r-- | audio/liblastfm/files/patch-tests_TestUrlBuilder.h | 13 |
5 files changed, 171 insertions, 5 deletions
diff --git a/audio/liblastfm/Makefile b/audio/liblastfm/Makefile index 82b08d1eb999..b5607760dbad 100644 --- a/audio/liblastfm/Makefile +++ b/audio/liblastfm/Makefile @@ -3,7 +3,7 @@ PORTNAME= liblastfm PORTVERSION= 1.0.9 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= audio MAINTAINER= jhale@FreeBSD.org @@ -12,15 +12,14 @@ COMMENT= Qt C++ library for the Last.fm webservices LICENSE= GPLv3+ LICENSE_FILE= ${WRKSRC}/COPYING +USES= cmake pkgconfig USE_GITHUB= yes GH_ACCOUNT= lastfm - -USES= cmake pkgconfig USE_LDCONFIG= yes USE_QT4= corelib dbus network sql xml \ moc_build qmake_build rcc_build -CMAKE_ARGS= -DBUILD_WITH_QT4:BOOL=ON +CMAKE_ON= BUILD_WITH_QT4 OPTIONS_DEFINE= FINGERPRINT TEST OPTIONS_DEFAULT= FINGERPRINT diff --git a/audio/liblastfm/files/patch-src_UrlBuilder.cpp b/audio/liblastfm/files/patch-src_UrlBuilder.cpp new file mode 100644 index 000000000000..dbe336905355 --- /dev/null +++ b/audio/liblastfm/files/patch-src_UrlBuilder.cpp @@ -0,0 +1,123 @@ +url(): + - Use https scheme to avoid 301 redirects + - Override default QUrl::TolerantMode with QUrl::StrictMode for Qt 5.x to + prevent overprocessing the already encoded input URL +localePath(): + - New function to return the base path of the localized website +host(): + - Just return www.last.fm since the localized hosts 301 redirect there +localize(): + - Set the path of the url instead of the host since the localized + hosts 301 redirect to the main website with a localized path +mobilize(): + - Mobile website 301 redirects to main website, so just return the url as-is + +--- src/UrlBuilder.cpp.orig 2014-10-02 14:05:46 UTC ++++ src/UrlBuilder.cpp +@@ -32,7 +32,7 @@ class lastfm::UrlBuilderPrivate (public) + lastfm::UrlBuilder::UrlBuilder( const QString& base ) + : d( new UrlBuilderPrivate ) + { +- d->path = '/' + base.toLatin1(); ++ d->path = localePath().toLatin1() + '/' + base.toLatin1(); + } + + +@@ -60,10 +60,10 @@ QUrl + lastfm::UrlBuilder::url() const + { + QUrl url; +- url.setScheme( "http" ); ++ url.setScheme( "https" ); + url.setHost( host() ); + #if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) +- url.setPath( d->path ); ++ url.setPath( d->path, QUrl::StrictMode ); + #else + url.setEncodedPath( d->path ); + #endif +@@ -85,49 +85,50 @@ lastfm::UrlBuilder::encode( QString s ) + + + QString //static +-lastfm::UrlBuilder::host( const QLocale& locale ) ++lastfm::UrlBuilder::localePath( const QLocale& locale ) + { + switch (locale.language()) + { +- case QLocale::Portuguese: return "www.lastfm.com.br"; +- case QLocale::Turkish: return "www.lastfm.com.tr"; +- case QLocale::French: return "www.lastfm.fr"; +- case QLocale::Italian: return "www.lastfm.it"; +- case QLocale::German: return "www.lastfm.de"; +- case QLocale::Spanish: return "www.lastfm.es"; +- case QLocale::Polish: return "www.lastfm.pl"; +- case QLocale::Russian: return "www.lastfm.ru"; +- case QLocale::Japanese: return "www.lastfm.jp"; +- case QLocale::Swedish: return "www.lastfm.se"; +- case QLocale::Chinese: return "cn.last.fm"; +- default: return "www.last.fm"; ++ case QLocale::Chinese: return "/zh"; ++ case QLocale::French: return "/fr"; ++ case QLocale::German: return "/de"; ++ case QLocale::Italian: return "/it"; ++ case QLocale::Japanese: return "/ja"; ++ case QLocale::Polish: return "/pl"; ++ case QLocale::Portuguese: return "/pt"; ++ case QLocale::Russian: return "/ru"; ++ case QLocale::Spanish: return "/es"; ++ case QLocale::Swedish: return "/sv"; ++ case QLocale::Turkish: return "/tr"; ++ default: return ""; + } + } + + ++QString //static ++lastfm::UrlBuilder::host( const QLocale& locale ) ++{ ++ return "www.last.fm"; ++} ++ ++ + bool // static + lastfm::UrlBuilder::isHost( const QUrl& url ) + { +- QStringList hosts = QStringList() << "www.lastfm.com.br" +- << "www.lastfm.com.tr" +- << "www.lastfm.fr" +- << "www.lastfm.it" +- << "www.lastfm.de" +- << "www.lastfm.es" +- << "www.lastfm.pl" +- << "www.lastfm.ru" +- << "www.lastfm.jp" +- << "www.lastfm.se" +- << "cn.last.fm" +- << "www.last.fm"; ++ QStringList hosts = QStringList() << "www.last.fm"; + + return hosts.contains( url.host() ); + } + ++ + QUrl //static + lastfm::UrlBuilder::localize( QUrl url) + { +- url.setHost( url.host().replace( QRegExp("^(www.)?last.fm"), host() ) ); ++#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) ++ url.setPath( url.path().prepend( localePath() ), QUrl::DecodedMode ); ++#else ++ url.setPath( url.path().prepend( localePath() ) ); ++#endif + return url; + } + +@@ -135,7 +136,6 @@ lastfm::UrlBuilder::localize( QUrl url) + QUrl //static + lastfm::UrlBuilder::mobilize( QUrl url ) + { +- url.setHost( url.host().replace( QRegExp("^(www.)?last"), "m.last" ) ); + return url; + } + diff --git a/audio/liblastfm/files/patch-src_UrlBuilder.h b/audio/liblastfm/files/patch-src_UrlBuilder.h new file mode 100644 index 000000000000..88626358b253 --- /dev/null +++ b/audio/liblastfm/files/patch-src_UrlBuilder.h @@ -0,0 +1,31 @@ +Add prototype for localePath() and adjust comments to reflect current +website layout + +--- src/UrlBuilder.h.orig 2014-10-02 14:05:46 UTC ++++ src/UrlBuilder.h +@@ -44,9 +44,11 @@ namespace lastfm + + QUrl url() const; + +- /** www.last.fm becomes the local version, eg www.lastfm.de */ ++ /** www.last.fm becomes the local version, e.g. www.last.fm/de */ + static QUrl localize( QUrl ); +- /** www.last.fm becomes m.last.fm, localisation is preserved */ ++ ++ /** DEPRECATED: Returns url as-is since the mobile website redirects ++ * to the main website */ + static QUrl mobilize( QUrl ); + + /** Use this to URL encode any database item (artist, track, album). It +@@ -60,7 +62,10 @@ namespace lastfm + */ + static QByteArray encode( QString ); + +- /** returns eg. www.lastfm.de */ ++ /** returns the base path of the localized website e.g. /de */ ++ static QString localePath ( const QLocale& = QLocale() ); ++ ++ /** returns www.last.fm */ + static QString host( const QLocale& = QLocale() ); + + /** return true if url is a last.fm url */ diff --git a/audio/liblastfm/files/patch-src_mbid__mp3.c b/audio/liblastfm/files/patch-src_mbid__mp3.c index 50a5dd1c091e..a56a6974f2cb 100644 --- a/audio/liblastfm/files/patch-src_mbid__mp3.c +++ b/audio/liblastfm/files/patch-src_mbid__mp3.c @@ -4,7 +4,7 @@ warning: logical not is only applied to the left hand side of this comparison [- --- src/mbid_mp3.c.orig 2014-10-02 14:05:46 UTC +++ src/mbid_mp3.c -@@ -94,7 +94,7 @@ int getMP3_MBID(const char *path, char m +@@ -94,7 +94,7 @@ int getMP3_MBID(const char *path, char mbid[MBID_BUFFE while (s) { mfile(3,head,fp,&s); diff --git a/audio/liblastfm/files/patch-tests_TestUrlBuilder.h b/audio/liblastfm/files/patch-tests_TestUrlBuilder.h new file mode 100644 index 000000000000..65807f92c783 --- /dev/null +++ b/audio/liblastfm/files/patch-tests_TestUrlBuilder.h @@ -0,0 +1,13 @@ +http://www.last.fm 301 redirects to https://www.last.fm causing test to fail + +--- tests/TestUrlBuilder.h.orig 2018-03-31 12:04:00 UTC ++++ tests/TestUrlBuilder.h +@@ -81,7 +81,7 @@ private slots: + + void test404() /** @author <max@last.fm> */ + { +- QCOMPARE( getResponseCode( QUrl("http://www.last.fm/404") ), 404 ); ++ QCOMPARE( getResponseCode( QUrl("https://www.last.fm/404") ), 404 ); + } + }; + |