aboutsummaryrefslogtreecommitdiff
path: root/audio/liblastfm
diff options
context:
space:
mode:
authorJason E. Hale <jhale@FreeBSD.org>2018-04-05 17:20:36 +0000
committerJason E. Hale <jhale@FreeBSD.org>2018-04-05 17:20:36 +0000
commitaae1055590d13a0be09f8451cce2b58fc18d49c2 (patch)
treee8fdda6a796b24c407224bd8ed949f431e6b1485 /audio/liblastfm
parentf3c1ddc38b45fa0330bc85c975d26ce32fff9f16 (diff)
downloadports-aae1055590d13a0be09f8451cce2b58fc18d49c2.tar.gz
ports-aae1055590d13a0be09f8451cce2b58fc18d49c2.zip
Notes
Diffstat (limited to 'audio/liblastfm')
-rw-r--r--audio/liblastfm/Makefile7
-rw-r--r--audio/liblastfm/files/patch-src_UrlBuilder.cpp123
-rw-r--r--audio/liblastfm/files/patch-src_UrlBuilder.h31
-rw-r--r--audio/liblastfm/files/patch-src_mbid__mp3.c2
-rw-r--r--audio/liblastfm/files/patch-tests_TestUrlBuilder.h13
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 );
+ }
+ };
+